学习Froms验证(二)

   由于前面发表的《学习Froms验证》里面的内容我理解,但是不是很熟悉于是找了些资料学习一下学习Froms验证

   System.Web.Security命名空间的FormsAuthentication类提供了很多通过forms authentication系统登陆和注销的函数

FormsAuthentication.GetAuthCookie(username, persistCookie)——为提供的username创建一个表单认证票据,接下来该方法创建并返回一个HttpCookie对象,该对象包含了票据的内容.如果persistCookie为true,则创建一个"持久性"的cookie.

FormsAuthentication.SetAuthCookie(username, persistCookie)——调用GetAuthCookie(username, persistCookie) 方法来生成表单认证票据.该方法将GetAuthCookie()方法返回的cookie添加到Cookies collection里(我们假定使用的是基于cookie的forms authentication.不然,该方法将调用一个内部的类来处理无Cookie的票据逻辑)

FormsAuthentication.RedirectFromLoginPage(username, persistCookie)——该方法调用SetAuthCookie(username, persistCookie),然后将用户再导航到恰当的页面.

这里当用户输入一个有效的证书时,我前面提到过要将他们返回到一个“恰当的页面”.那么什么是恰当的页面呢?我们知道,当用户访问一个未被授权的页面时,Forms Authentication自动将其导航到登陆页面,登陆成功后,就在查询字符串里的ReturnUrl参数里包含该请求的URL.那就是说,如果用户试图访问ProtectedPage.aspx页面,但其又未被授权,那么Forms Authentication就会将他导航到

Login.aspx?ReturnUrl=ProtectedPage.aspx

 

我们可以通过HttpContext object的User属性来判断当前登陆用户的身份.HttpContext object对象描述了当前请求的信息,当然它也可以表示这些常见的ASP.NET objects:Response,Request,以及Session等.该User属性描述了当前HTTP request的security context,并且执行IPrincipal接口.

User属性是由FormsAuthenticationModule来设置的.具体来说,当FormsAuthenticationModule在请求里发现了一个票据,它就创建一个新的GenericPrincipal object对象并赋值给该User属性.

 

Principal objects对象(比如GenericPrincipal)提供了用户身份(identity)以及所属角色的信息。IPrincipal接口定义了2个成员:

.IPrincipal——返回一个布尔值的方法,指出该principal是否属于指定的角色.

.Identity——该属性返回一个执行IIdentity接口的对象.而IIdentity接口定义了3个属性:AuthenticationType, IsAuthenticated,以及Name.

当使用forms authentication时候,将会为GenericPrincipal的Identity属性创建一个FormsIdentity object对象.该FormsIdentity类的AuthenticationType属性总是返回字符串“Forms” ,IsAuthenticated属性总是返回true,而Name属性返回的就是创建票据时指定的username;除了这3个属性外,FormsIdentity还有一个Ticket属性,通过该属性我们可以访问潜在的票据 .该Ticket属性返回的是一个FormsAuthenticationTicket类型的对象.该类型有诸如Expiration, IsPersistent, IssueDate, Name等的属性.

这里有两个控件是与这里的机制是对应的LoginView,通过验证就是LoggedInTemplate没有通过就是AnonymousTemplate

LoginStatus验证后可以显示出注销,没有验证选择登录

 

来源:http://www.cnblogs.com/couhujia/archive/2009/10/26/1589971.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章