以一种使其与身份验证cookie绑定的方式维护会话状态数据

时间:2011-05-18 22:27:46

标签: asp.net forms-authentication session-state

我正在开发一个ASP.NET MVC 3应用程序,它本质上是数据库的代理。要登录,用户必须提供其数据库用户和名称。 (我知道将数据库用户用作应用程序用户不是一个好主意,但我没有设计数据库,所以不要怪我。)

当我的用户登录时,我想在会话变量中存储他们的用户名和密码:

Session["UserID"] = TheConnectionStringBuilder.UserID;
Session["Password"] = TheConnectionStringBuilder.Password;

但是,会话状态本身并不与身份验证cookie相关联,这可能会在以后引发问题。有没有办法保持会话状态数据的方式,它仍然与身份验证cookie绑定?

1 个答案:

答案 0 :(得分:1)

其中一种方法是使用配置将会话状态超时与身份验证超时进行匹配。例如,

<authentication mode="Forms">
 <forms timeout="30" />
</authentication>

<sessionState timeout="31" />

另一种方法是将凭证存储到某些生成密钥标记的持久存储(例如文件)中,然后将此密钥保存在身份验证cookie中。但是,我觉得这是一个关于做事的方式,我宁愿选择会话方式。

出于某种原因,如果在会话中未找到用户标识/密码(例如,应用程序池回收),则可以强制用户重新登录(使用FormsAuthentication.SignOut后跟{{ 3}})。