.NET注销的实现

除了提供用户登录的方法外,FormsAuthentication 类还提供了 SignOut方法。SignOut 方法只是销毁表单身份验证票证,从而从网站中注销用户。

    提供注销链接是一个常用功能,因而ASP.NET 有一个专门设计来注销用户的控件。LoginStatus控件 根据用户的身份验证状态来显示“登录” 链接按钮或“注销”链接按钮。“登录”链接按钮呈现给匿名用户,而“注销”链接按钮呈现给已验证用户。可通过LoginStatus 的 LoginText和LogoutText属性来配置“登录”和“注销”链接按钮的文本。

    单击“登录”链接按钮会导致一个回传,进而重定向到登录页面。单击“注销”链接按钮会导致LoginStatus 控件调用FormsAuthentication.SignOff() 方法,然后将用户重定向到某个页面。注销用户被重定向到哪个页面取决于LogoutAction 属性,该属性可以取以下三值之一:

  • Refresh – 默认值;将用户重定向到他们刚访问的页面。如果他们刚访问的页面不允许匿名用户,则FormsAuthenticationModule 会自动将用户重定向到登录页面。
  • Redirect – 用户被重定向到 LoginStatus 的 LogoutPageUrl 属性中指定的 URL 。
  • RedirectToLoginPage – 用户被重定向到登录页面。

    您可能会奇怪此处为何要进行重定向。如果用户想停留在同一页面,为何还需要显式重定向?原因是单击“注销” 链接按钮时,用户的表单身份验证票证仍然在Cookie 集合中。因此,回传请求是一个验证过的请求。LoginStatus 控件会调用SignOut 方法,但可能是在FormsAuthenticationModule 验证了用户之后调用。因此,显式重定向会导致浏览器重新请求页面。但浏览器重新请求页面时,表单身份验证票证已删除,因此该请求是匿名的。

自定义注销控件的代码:

FormsAuthentication.SignOut();//表示销毁表单身份验证票证

Response.Redirect("~/Login.aspx");//表示回到登录页面

发布了48 篇原创文章 · 获赞 14 · 访问量 16万+

猜你喜欢

转载自blog.csdn.net/ewqewqqwe/article/details/89444544