Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 以使会话状态数据与身份验证cookie保持关联的方式维护会话状态数据_Asp.net_Forms Authentication_Session State - Fatal编程技术网

Asp.net 以使会话状态数据与身份验证cookie保持关联的方式维护会话状态数据

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;

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

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

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中进行此类检查。