【发布时间】:2009-05-17 06:04:09
【问题描述】:
我需要帮助找出我的身份验证票证在我托管的网站上大约一个小时后过期的原因。但是,如果我在本地运行该站点,则身份验证票证会在正确的时间内保持活动状态。
这是我的本地主机 web.config:
<authentication mode="Forms">
<forms loginUrl="~/Account/LogOn" timeout="20160" slidingExpiration="true" path="/" />
</authentication>
这是我托管的 web.config:
<authentication mode="Forms">
<forms loginUrl="~/Account/LogOn" timeout="20160" slidingExpiration="true" domain=".mywebsite.com" path="/" />
</authentication>
我知道正在创建身份验证票证,因为:
- 我可以在浏览器 cookie 中看到它
- 即使在关闭浏览器并重新打开后我仍然保持登录状态
- 即使在网站回收(更改并保存 web.config 以回收它)后,我仍然保持登录状态
当我在浏览器中查看 cookie 过期日期时,已经是 2 周后。但是,大约一个小时后,我的身份验证总是过期。
我该怎么做才能弄清楚为什么托管网站的身份验证会过早到期? 我不知道如何解决这个问题,因为我的托管网站是唯一有问题的网站。
更新 1:等待 1 小时后,我检查浏览器,发现 cookie 仍然存在。事实上,它的到期日期设置为 2 周后。但是,如果我重新加载页面或尝试访问任何需要身份验证的页面,我将被带到登录页面。
【问题讨论】:
-
肯定是票证到期而不是会话问题?
-
我在这个站点上根本没有使用会话。一切都在 cookie 中的身份验证票中。另外,会话与表单身份验证没有任何关系吗?
-
您所指的身份验证票证/cookie - 是会话。该 cookie ".ASPXAUTH" 在服务器上维护会话。
-
有趣,我不知道。如果是这种情况,它似乎不是会话问题,因为当网站通过更改的 web.config 文件进行回收时,身份验证票仍然有效。
标签: asp.net asp.net-mvc authentication cookies asp.net-membership