【问题标题】:How long does a session cookie last? When should I reauthenticate?会话 cookie 持续多长时间?我应该什么时候重新认证?
【发布时间】:2013-03-12 18:02:11
【问题描述】:

我可以使用 session cookie 多长时间?我有一个客户端应用程序,我在其中通过了 SharePoint 网站的身份验证,并且我正在使用 cookie 来浏览子网站。我正在保存 cookie 并重复使用标头,以便稍后登录该站点,而无需再次进行身份验证。没有设置到期日期。 cookie 会持续多久,我应该在什么时候再次进行身份验证?

【问题讨论】:

    标签: cookies session-cookies


    【解决方案1】:

    如果没有过期,它将一直存在,直到浏览器被杀死。通常在 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 实际上不会永远存在。 ASP.Net 的默认表单身份验证 ticket 超时为 30 分钟,这实际上对 Session cookie 的到期完全没有影响 - 只是 Session cookie 的值不会被视为有效刷新页面时由服务器执行。会话过期后的页面刷新绝不会导致敏感数据暴露。
    • 您的回答/否决似乎将 Auth cookie 与旧的 ASP Session cookie 混淆了。我的回答是指浏览器会话 cookie 的行为方式,而不是持久性 cookie(过期)。但是,您关于票证到期的观点是正确的。
    【解决方案2】:

    会话 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>
    

    【讨论】:

    • 感谢您的回答。不幸的是,我目前无法验证这一点。已投票
    • 我很困惑为什么我的会话 cookie 从未在 Chrome 中被删除。这是因为您的回答:“启动时:从我离开的地方继续”。现在明白了,谢谢!
    猜你喜欢
    • 2010-12-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-15
    • 1970-01-01
    • 2014-05-22
    • 1970-01-01
    相关资源
    最近更新 更多