我可以使用仅限会话 Cookie多长时间?我有一个客户端应用程序,我在其中对SharePoint网站进行了身份验证,并且我使用Cookie来浏览子网站。我保存cookie并重新使用标题稍后登录该网站而不再进行身份验证。没有设置过期日期。该Cookie会持续多久以及何时应该再次进行身份验证?
答案 0 :(得分:8)
会话cookie的到期因浏览器而异。我无法找到任何类型的参考,给出每个浏览器的当前细节。过去,当浏览器关闭时会破坏会话cookie,但现在某些浏览器的设置如果启用,将导致会话cookie在浏览器关闭后持续存在。例如,Firefox的“当Firefox启动时:从上次显示我的窗口和选项卡”将导致这种情况发生,有些令人惊讶。同样适用于“在启动时:在我停止的地方继续”在Chrome中。
我并不关心SharePoint所以我暂时没有使用它,但我记得它使用ASP.Net Forms身份验证,从web.config中提取配置就像任何其他ASP.Net站点一样。话虽如此,你并不真正关心你的cookie的超时。您关心的是服务器端会话令牌的超时 - 也就是说,服务器可以识别所述cookie中包含的数据的时间。这是由ASP.Net应用程序的web.config文件的forms标签中的timeout属性设置的:
<system.web>
<!-- ... -->
<authentication mode="Forms">
<forms timeout="2880" />
</authentication>
<!-- ... -->
</system.web>
答案 1 :(得分:0)
如果没有过期,它将一直存在,直到浏览器被杀死。通常在ASP.Net中,会话cookie设置为20分钟超时。这通常很不错。根据您的应用程序,您可能还需要一个javascript计时器。否则浏览器将无法理解何时注销,直到发生页面刷新并且可以公开敏感数据。您将在任何在线银行网站上看到此实施。
(编辑从downvote澄清) 事实上,会话cookie一直存在,直到浏览器关闭。您可以在此处查找:http://www.allaboutcookies.org/cookies/cookies-the-same.html
上述答案也是正确的,因为一些较新的浏览器会在崩溃/关闭后恢复会话cookie。
@Grinn,你确实提出了一个很好的点票。使用ASP.Net Forms auth时,加密的Ticket将放置在会话cookie中。就浏览器而言,它们仍然可以使用cookie,但如果票证中的日期戳已过期,则将其视为无效。如果您在Sharepoint中使用某些表格身份验证,您可能应该编写自己的成员资格提供程序,可以破解Cookie中的故障单,但忽略日期戳是否过期。 Building Custom Membership Provider