ASP.Net 2.0 窗体身份验证机制
2010-03-03 14:44 Billy King 阅读(171) 评论(0) 收藏 举报当某一个用户使用用户名成功登陆网站时,FormsAuthentication(窗体身份验证机制,下面统一使用英文术语)
FormsAuthentication通过FormsAuthenticationModul
IIS
Asp.net验证分为两步。首先,IIS验证当前用户访问网站所使用的windows帐号是否有权限。如果IIS访问被配置为anonymous,则任何用户都能访问页面。
然后,在IIS验证完毕后,ASP.net开始执行自身的验证。验证模式可以在web.config文件中配置,只要在config文件中写上<authentication
Asp.Net
Froms
<system.web>
<authentication
<forms
protection="All"
timeout="30"
name=".ASPXAUTH"
path="/"
requireSSL="false"
slidingExpiration="true"
defaultUrl="default.aspx"
cookieless="UseDeviceProfile"
</authentication>
</system.web>
这些属性详细描述如下:
loginUrl:指向登陆页面,你应改把登陆页面放在一个需要Secure
potection:设置为”ALL”表明authentication
timout:该属性定义了验证session的过期时间。默认值为30分钟。
RequireSSL:该属性被设置为false,这表明验证的cookies可以不同过SSL加密传输。如果对session的安全性特别重视的话,则需要设置为true。
slidingExpiration:该属性被设置为true,这表示用户只要在网站上持续保持活动,则session就不会过期。
DefaultUrl:该属性表示登陆后的默认页面。
Cookieless:该属性被设置为UseDeviceProfile,这表示cookie将在任何支持它的浏览器中使用,如果该浏览器不支持cookie的话,form
enableCrossAppRedirects:该属性表示是否可以将通过身份验证的用户重定向到其他web应用程序。True表示可以,False表示不可以。
Authorization
类UrlAuthorizationModule用来执行保障只有通过身份验证的用户才能访问页面。你可以在web.config文件中配置这个类:配置如下:
<system.web>
<authorization>
<deny
</authorization>
</system.web>
以上配置表明,没有通过验证的用户都将被拒绝访问页面。如果一个没有验证的用户试图访问页面,他将会被重定向到loginUrl属性定义的登陆页面上。
Forms
Forms
我们来分析一下上面的流程:
第一步:用户访问default.aspx页面,IIS通过了验证,ASP.Net发现
元素中包含<deny
第二步:服务器寻找包含验证信息的cookie,如果没有找到这个cookie,用户将被重定向到登陆页面。就是loginurl所指定的页面。用户将在那个页面输入登陆信息。:
第三步:浏览器请求浏览登录页面,同时传递ReturnUrl的参数的值。
第四步:服务器调转到登陆页面。
第五步:用户输入身份验证信息,并且提交数据,其中还包含ReturnUrl的参数值。
第六部:服务器通过读取存储介质(例如sqserver数据库)验证用户的信息。登陆页面将创建一个包含form
ASP.NET中,相应的登录页面代码必须要有一下这些代码,不然还是不能通过loginUrl的限制:
{
}
---------------------------------------------------------------------------------------------------------------------------------------------
在Asp.net2.0身份验证可以通过membership系统。Membership类提供了ValidateUser的方法,参考如下:
if
{if
else
else
}
第七步:用户验证成功,服务器重新让浏览器指向ReturUrl所指定的页面。