【问题标题】:Persistent Auth Token Expires持久身份验证令牌过期
【发布时间】:2011-12-15 22:16:33
【问题描述】:

我有一个使用表单身份验证的 ASP.NET MVC 应用程序。这是我创建身份验证令牌的代码行:

FormsAuthentication.SetAuthCookie(username, true);

我的 web.config 包含:

<system.web>
  <machineKey validationKey="{unique key}" decryptionKey="{unique key}" validation="SHA1" decryption="AES" />
  <authentication mode="Forms">
    <forms loginUrl="~/account/" timeout="2880" />
  </authentication>
  ...
</system.web>
<location path="my">
  <system.web>
    <authorization>
      <deny users="?" />
    </authorization>
  </system.web>
</location>

尽管将持久 cookie 的参数设置为 true,但我的用户在几天不活动后会退出。

该应用已部署到 AppHarbor,但当它托管在专用服务器上时,我遇到了相同的行为。

我遗漏了什么会导致用户偶尔退出?

【问题讨论】:

    标签: asp.net asp.net-mvc-3 appharbor


    【解决方案1】:

    您的超时设置为 2880 分钟,即 48 小时?

    timeout 用于指定表单身份验证会话的有限生命周期。默认值为 30 分钟。如果发出持久性表单身份验证 cookie,则超时属性也用于设置持久性 cookie 的生命周期。

    http://msdn.microsoft.com/en-us/library/ff647070.aspx

    【讨论】:

    • 啊,我看到在 ASP.NET 1.1 中,持久性 cookie 忽略了超时,但从 2.0 开始,它也用于持久性 cookie。呵呵。
    • 我将超时更改为 5259600(60 分钟/小时 * 24 小时/天 * 365.25 天/年 * 10 年)。
    • 你确定够长吗?
    • 鉴于(默认情况下)会话状态存储在服务器端的内存中,这不会对 Web 应用程序的性能产生不利影响吗?我看到了 Jeff 试图实现的目标(客户端上的持久登录),我想知道存储我自己的持久登录用户“令牌”是否是一个更好的解决方案?虽然不想重新发明轮子:)
    猜你喜欢
    • 1970-01-01
    • 2021-01-10
    • 2015-11-12
    • 1970-01-01
    • 1970-01-01
    • 2021-02-21
    • 1970-01-01
    • 2016-09-27
    • 2021-01-10
    相关资源
    最近更新 更多