长期Auth Cookie的ASP.Net会话状态

时间:2009-07-31 07:10:23

标签: asp.net session asp.net-membership

我要求长期坚持持续认证(1个月)

我也使用了很多会话变量。现在我无法将会话超时设置为那么长(它将终止服务器)。目前设定为30分钟。

假设用户将浏览器窗口保持打开一天,auth cookie将不会过期,但会话将会到期。而应用程序将无法运行。

那么这个问题的任何建议,解决方法或有用的链接?

1 个答案:

答案 0 :(得分:1)

保持身份验证cookie很简单,并且独立于会话状态:

<system.web>
  <authentication mode="Forms">
    <forms timeout="43200"/>
  </authentication>
</system.web>

超时设置以分钟为单位,所以:

  

30(天)* 24(小时)* 60(分钟)= 43200分钟

会话内容有点棘手,但可行。

你真的需要查看你在会话中实际存储的内容,以及你是否真的需要所有这些内容。由于会话变量存储在服务器上,要让它们在应用程序重新启动后保持不变(默认为网站上次活动后20分钟,或自上次应用程序重新启动后29小时,以及其他特殊情况),您将拥有查看使用InProc会话之外的其他内容 - 使用会话服务器或SqlSessions。

但是,您可能也可以对配置文件执行某些操作,因此将最少使用的变量存储在配置文件存储中,并且只在您确实需要时才检索它们。

否则,您需要查看在用户返回时可以重建会话状态的方法 - 因此,在持久性cookie中存储某种已知令牌,使您能够从中断的地方继续 - 但最简单这样做的方法是从身份验证系统中获取用户名,并将详细信息存储在数据库中......