MVC 3.0会话状态超时和身份验证表单超时

时间:2014-05-14 10:15:10

标签: asp.net-mvc-3 forms-authentication session-timeout

我是一个MVC3网站,如果会话超时到期,我会将用户重定向到登录页面。经过一些研究,我得知我必须添加到web.config

<sessionState mode="InProc" cookieless="false" timeout="1"></sessionState>

设置用户会话超时。在这种情况下,如果用户空闲,它将在1分钟后清除用户会话数据。我添加了这个

<authentication mode="Forms">
      <forms loginUrl="~/Default/Login" timeout="1"/>
    </authentication> 

在会话超时的情况下将用户重定向到登录页面。实际上,它有效,但我有一些问题可以准确理解发生了什么:

  1. 这两个标签之间有什么关系?他们之间的依赖是什么?
  2. 是否必须为两个标记设置超时属性= 1?
  3. 我是否有更好的方法来完成我的需要。
  4. 提前致谢。

2 个答案:

答案 0 :(得分:0)

SessionState和Forms Authentication之间的区别是:

SessionState:为您的应用程序的每个请求创建一个会话。哪个会有自己的超时。

表单身份验证:当用户使用您的应用程序进行身份验证时,会创建身份验证。哪个也有自己的超时。这个超时值存储为Ticket的一部分,Ticket被加密并存储在cookie或URL(无cookie身份验证)中,我相信。

如果要根据会话结束用户身份验证,则必须将其写入应用程序。我这样做的唯一原因是,我在会话中存储了经过身份验证的数据,以便交叉请求。

答案 1 :(得分:-2)

sessionState 元素配置当前应用程序的会话状态设置。 当新客户端开始与Web应用程序交互时,将发出会话ID,并在会话有效时与来自同一客户端的所有后续请求相关联。此ID用于维护跨请求与客户端会话关联的服务器端状态。该元素控制ASP.NET应用程序如何为每个客户端建立和维护此关联。 这种机制非常灵活,允许您在不使用cookie的情况下托管进程外的会话状态信息和跟踪状态。

超时:指定会话在放弃之前可以空闲的分钟数。对于进程内和状态服务器模式,timeout属性不能设置为大于525,601分钟(1年)的值。 会话超时配置设置仅适用于ASP.NET页面。更改会话超时值不会影响ASP页的会话超时。同样,更改ASP页的会话超时不会影响ASP.NET页面的会话超时。 默认值为20分钟。

表单身份验证: - 这是一种基于cookie的身份验证,其中用户名和密码作为Cookie文件存储在客户端计算机上,或者通过URL为每个请求发送。基于表单的身份验证向用户提供基于HTML的Web页面,该Web页面提示用户输入凭据。

您的所有问题均已通过上述说明进行了解答