Asp.net 以使会话状态数据与身份验证cookie保持关联的方式维护会话状态数据
我正在开发一个ASP.NET MVC 3应用程序,它本质上是数据库的代理。要登录,用户必须提供其数据库用户名和名称。(我知道使用数据库用户作为应用程序用户不是一个好主意,但我没有设计数据库,所以不要怪我。) 当我的用户登录时,我希望在会话变量中存储他们的用户名和密码:Asp.net 以使会话状态数据与身份验证cookie保持关联的方式维护会话状态数据,asp.net,forms-authentication,session-state,Asp.net,Forms Authentication,Session State,我正在开发一个ASP.NET MVC 3应用程序,它本质上是数据库的代理。要登录,用户必须提供其数据库用户名和名称。(我知道使用数据库用户作为应用程序用户不是一个好主意,但我没有设计数据库,所以不要怪我。) 当我的用户登录时,我希望在会话变量中存储他们的用户名和密码: Session["UserID"] = TheConnectionStringBuilder.UserID; Session["Password"] = TheConnectionStringBuilder.Password;
Session["UserID"] = TheConnectionStringBuilder.UserID;
Session["Password"] = TheConnectionStringBuilder.Password;
但是,会话状态本质上并不与身份验证cookie相关联,这可能会在以后导致问题。是否有任何方法可以保持会话状态数据与身份验证cookie保持关联?其中一种方法是使用配置将会话状态超时与身份验证超时相匹配。比如说,
<authentication mode="Forms">
<forms timeout="30" />
</authentication>
<sessionState timeout="31" />
后跟)。为什么不将该数据存储在用户的身份验证cookie中。在任何地方存储这样的普通密码都很糟糕,但用户的cookie至少是加密的。这样你就可以避免会话劫持问题……你认为你可能会遇到什么问题?@James Connell:我该怎么做?@James-还记得吗?我同意会话状态本质上与身份验证cookie无关,但您可以通过将两个cookie的超时设置为相同来实现这一点。在会话结束时,您可以调用singout,在注销时您可以放弃会话。这种机制仍然有一个弱点:如果用户删除会话状态cookie,而不是身份验证cookie,会发生什么情况?@Eduardo,不太可能,如果用户删除会话cookie,则会话将过期,这将触发“最后一段”条件,即如果您找不到用户id/pwd,则强制用户注销。您可以按需(即访问数据库时)或在base page/global.asax中进行此类检查。