在web.config中,我已按如下方式配置了表单身份验证:
<authentication mode="Forms">
<forms loginUrl="~/Account/Login.aspx"
timeout="20"
slidingExpiration="true"/>
</authentication>
最初,ASPXAUTH cookie设置正确。使用Firefox的cookie查看器,我可以看到cookie和有效期是正确的(20分钟)。
滑动到期还会正确设置更新的Cookie(再添加20分钟)。
但之后任何新的http请求(即使在接下来的5分钟内完成)都会导致302错误,并重定向到Login.aspx,就好像身份验证已过期一样。
申请详情如下: 目标asp.net 4 iis 7.5 共享主机,但有专用池(回收没有帮助)。 Login.aspx使用asp Login控件进行身份验证(没有自定义cookie)。
有什么想法吗?
答案 0 :(得分:0)
这可能有很多原因。
这也发生在您的本地计算机上吗?您是否在web.config中配置了一个与本地主机环境不匹配的httpCookie域?
您是否配置了机器密钥(验证/加密)?这在负载平衡的情况下很重要。
您在IIS中使用动态内容缓存吗?
查看您的活动日志。默认情况下,基于失败的表单身份验证的302错误将记录在那里。是否有任何条目告诉您为什么被认为是未经身份验证?它可以帮助确定根本原因(票证已过期,无法解密等)。
另请注意,表单身份验证cookie的到期时间不会扩展到每个请求。在原始超时的50%过去后(在您的情况下为10分钟),表单身份验证cookie将刷新。因此,请适当配置会话超时。