【发布时间】:2012-04-07 09:17:07
【问题描述】:
我在玩表单身份验证,我注意到如果用户关闭浏览器而不是点击网站上的退出按钮会出现问题。
如果用户关闭浏览器,表单身份验证 cookie 在加载备份时仍然存在,即使它是仅会话 cookie 并且没有持久化。在我的母版页后面的代码中,我有以下内容。
母版页代码
protected void Page_Init(object sender, EventArgs e) { // if authenticated, initialize session if (Request.IsAuthenticated) { // set stuff } }
当我第一次调试它时,它命中 Request.IsAuthenticated 它是假的,然后它再次命中它,它是真的。问题出在前端页面中,我进行了一些检查以查看用户是否已通过身份验证,并且在评估这些条件时为假。
母版页前端
<% if (Request.IsAuthenticated) { %>
<li>Admin Page</li>
<% } %>
设置验证 Cookie
FormsAuthentication.SetAuthCookie(username, false);
web.Config
<authentication mode="Forms">
<forms
loginUrl="/"
name="ASPXFORMSAUTH"
timeout="360"
/>
</authentication>
总结
- 当用户刚刚关闭/关闭 浏览器关闭,即使它不是持久性 cookie
- 如果用户在加载 站点上的 Request.IsAuthenticated 检查评估为 false 首先在调试器中命中,然后在第二个中命中。前端 page 显然会在第一次点击时检查这些东西,因为它们 评估为假。
【问题讨论】:
标签: asp.net webforms forms-authentication