我正在使用 Membership Provider 开发一个 Web 应用程序来实现对应用程序部分的身份验证和用户/角色访问。
我LoginStatus
在我的母版页中使用控件作为注销链接,但测试它我发现注销不起作用。如果我尝试再次访问我的应用程序的任何页面(注销后),则会显示该页面...
我想这个问题取决于存储在用户会话中的数据不会自动清除。这是正确的?
那么实现注销和清除会话的正确方法是什么?
注意
我没有为LoginStatus
控件实现任何事件。我正在使用表单身份验证。在我的登录页面中,我正在使用以下代码:
FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(
1, // Ticket version
this.txtUser.Text, // Username associated with ticket
DateTime.Now, // Date/time issued
DateTime.Now.AddMinutes(30), // Date/time to expire
true, // "true" for a persistent user cookie
ruolo, // User-data, in this case the roles
FormsAuthentication.FormsCookiePath);
string hash = FormsAuthentication.Encrypt(ticket);
HttpCookie cookie = new HttpCookie(
FormsAuthentication.FormsCookieName,
hash);
if (ticket.IsPersistent) { cookie.Expires = ticket.Expiration; }
Response.Cookies.Add(cookie);
在我的web.config system.web
部分:
<authentication mode="Forms">
<forms name=".ASPXAUTH" loginUrl="login.aspx" protection="All" path="/" domain="keyforup.it"/>
</authentication>
<authorization>
<deny users="?"/>
</authorization>