9

How long can I use a session cookie? I have a client application where I authenticated to a SharePoint site and I am using the cookies for navigating through the subsites. I am saving the cookie and reusing the headers to login to the site at a later point without authenticating again. There is no expiration date set. How long will the cookie last and when should I authenticate back again?

4

2 回答 2

9

会话 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>
于 2013-10-28T19:31:10.390 回答
1

如果没有过期,它将一直存在,直到浏览器被杀死。通常在 ASP.Net 中,会话 cookie 设置为 20 分钟超时。这通常很好。根据您的应用程序,您可能还需要一个 javascript 计时器。否则浏览器将无法理解何时退出,直到页面刷新发生并且敏感数据可能被暴露。您将在任何在线银行网站上看到此实现。

(编辑以从downvote中澄清)实际上,会话cookie确实会一直存在,直到浏览器关闭。你可以在这里查看:http ://www.allaboutcookies.org/cookies/cookies-the-same.html

上面的答案也是正确的,因为一些较新的浏览器会在崩溃/关闭后恢复会话 cookie。

@Grinn,您确实提出了一个很好的观点。使用 ASP.Net Forms 身份验证时,将加密的票证放置在会话 cookie 中。就浏览器而言,他们的 cookie 仍然可以保留,但如果票证中的日期戳过期,则会被视为无效。

如果您在 Sharepoint 中使用某种形式的表单身份验证,您可能应该只编写自己的会员提供程序,它可以破解 cookie 中的票证,但忽略日期戳是否已过期。建立自定义会员提供程序

于 2013-03-22T18:56:16.503 回答