C# ASP.NET登录状态:注销不工作
我正在使用会员资格提供商开发一个web应用程序,以实现对应用程序部分的身份验证和用户/角色访问C# ASP.NET登录状态:注销不工作,c#,asp.net,.net,authentication,membership-provider,C#,Asp.net,.net,Authentication,Membership Provider,我正在使用会员资格提供商开发一个web应用程序,以实现对应用程序部分的身份验证和用户/角色访问 我在母版页中使用LoginStatus控件作为注销链接,但测试发现注销不起作用。如果我尝试再次访问我的应用程序的任何页面(注销后),该页面将显示 我认为这个问题取决于存储在用户会话中的数据,这些数据不会自动清除。是吗 那么,实现注销和清除会话的正确方法是什么呢 注意 我没有为LoginStatus控件实现任何事件。我正在使用表单身份验证。在我的登录页面中,我使用以下代码: FormsAuthentic
我在母版页中使用
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);
在myweb.configsystem.web
部分:
<authentication mode="Forms">
<forms name=".ASPXAUTH" loginUrl="login.aspx" protection="All" path="/" domain="keyforup.it"/>
</authentication>
<authorization>
<deny users="?"/>
</authorization>
在LoggedOut
中调用Session.about()
控件的LoginStatus
事件解决了这个问题,但我想知道这是否是实现这一点的最佳方法。我在试图找到这个问题的解决方案时几乎失去了理智。在其他浏览器上一切正常,但firefox和chrome不会在用户登录后将其注销到初始页面
当我在site.master文件中将表单的action属性设置为action=“default.aspx”时,它开始工作
当我在浏览器调试器中查看表单操作时,表单操作具有默认值,但在chrome和firefox上,操作没有设置属性。我认为这可能是.net登录状态控制脚本的问题
由于我的系统现在可以正常工作,我不会进一步搜索,但我希望这将对有类似问题的人有所帮助。我以前也遇到过类似的问题,我发现问题是由于IIS设置无效,
SessionID不断更改,请确保将会话ID
打印到页面,以确保其不会更改。“如果我尝试再次访问我的应用程序的任何页面(注销后),页面将显示”-您在web.config中是否有任何内容可防止页面显示给未经身份验证的用户-例如deny users=“?”在web的system.web/authorization部分中。config@Joe对我编辑了我的问题,为什么不直接使用请求。IsAuthenticated
?@mattytommo,因为这样你就必须为可能出现的每个请求添加该检查。使用authorization元素可以让IIS为您执行此操作。您可以发布您的注销操作吗?仅仅使用FormsAuthentication.SignOut
可以说更干净:)@mattytomo不幸的是FormsAuthentication.SignOut
似乎对我不起作用。。。