ASP.NET Forms表单验证流程

1、站点web.config 配置Authentication 和Authorization 节点

loginUrl: 为用户访问指定页面前默认最先访问的页面。

authorization:为授权所有用户都可以访问


2、在站点子文件夹User下添加web.config,设置可访问当前子文件夹下的文件的用户。

<location path="login.aspx"> 对指定页面进行授权

<allow roles="user"/> 对user角色的用户授权

<deny users="*"/> 拒绝其他所有用户


3、在loginUrl 指定的页面进行跳转路径的分配

Request.QueryString["ReturnUrl"]:为从哪个页面跳转而来,这里即用户访问的页面。


4、根据页面路径跳转到指定路径,如 "/admin/login.aspx"

在Page_Load判断是否已通过验证(IsAuthenticated)并且为指定角色用户(IsInRole("user"))  则直接跳过登录。


5、在login页面输入用户信息 点击登录,经过数据库验证后,通过生成验证票据 FormsAuthenticationTicket,保存到cookie或session中。

验证票据中包括:版本信息,用户名、生效时间、过期时间、是否永久保存和用户数据等。而关于用户角色的信息,我们保存在用户数据中,即"user"。


6、在Global.asax文件中 在管道事件Application_AuthenticateRequest中,将第4步验证票据中的用户数据,即角色信息,设置到当前访问用户。


7、此时在验证票据和cookie未失效前,用户再次访问站点user路径下的文件时,验证的流程即:

 A 浏览器请求Index.aspx

 B 服务器端接收请求,创建HttpContext、HttpRequest、HttpCookie等

 C 执行管道事件在Application_AuthenticateRequest方法中,读取验证票据中的用户信息,保存为当前用户的角色信息。

 D 根据站点web.config下配置的loginUrl,访问相应页面,即loginRedirect页面。

 E 根据配置文件/user/login 任何用户都可访问,跳转到指定页面,即/user/login.aspx

 F IsAuthenticated 已验证,并且C步骤保存的角色信息也为user  直接跳转index.aspx 

    若C步骤中读取的用户信息保存的角色不是user 则无法跳转index页面,需要重新登录。


 

 

记录下~~~~




  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值