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