我正在玩表单身份验证,如果用户关闭浏览器而不是点击网站上的“注销”按钮,我发现了一个问题。
如果用户关闭浏览器,则表单auth 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>
摘要
答案 0 :(得分:0)
想出来。
似乎是一个Firefox问题。 Firefox用于允许用户保存其标签,但删除了该功能。保存标签还保存了与标签相关联的任何会话cookie。
about:config中的设置是
browser.showQuitWarning
我在firefox 11上,所以默认情况下这应该被禁用,但我的配置不知何故被破坏了,我不得不通过使用安全模式和恢复默认设置来重置它。现在它可以工作