我是一个MVC3网站,如果会话超时到期,我会将用户重定向到登录页面。经过一些研究,我得知我必须添加到web.config
<sessionState mode="InProc" cookieless="false" timeout="1"></sessionState>
设置用户会话超时。在这种情况下,如果用户空闲,它将在1分钟后清除用户会话数据。我添加了这个
<authentication mode="Forms">
<forms loginUrl="~/Default/Login" timeout="1"/>
</authentication>
在会话超时的情况下将用户重定向到登录页面。实际上,它有效,但我有一些问题可以准确理解发生了什么:
提前致谢。
答案 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页面提示用户输入凭据。
您的所有问题均已通过上述说明进行了解答