cap*_*gon 2 c# asp.net forms-authentication session-timeout
我有一个使用窗体身份验证设置为45分钟超时的asp.net 4.0应用程序。我想在会话过期后将用户重定向到超时页面。谁能告诉我该怎么做?我正在运行.net 4.0。
web.config具有:
<authentication mode="Forms">
<forms name=".ASPXAUTH" loginUrl="~/Login.aspx"
defaultUrl="~/Default.aspx" protection="All" timeout="45"
requireSSL="false">
</forms>
</authentication>
Run Code Online (Sandbox Code Playgroud)
Global.asax.cs文件具有:
void Session_End(object sender, EventArgs e)
{
Response.Redirect("~/Timeout.aspx");
}
Run Code Online (Sandbox Code Playgroud)
在该Session_End方法中无法进行重定向。它不是由于请求而运行的,因此它没有Response对象,也没有响应可以重定向到任何地方。
由于会话期满,无法在浏览器中执行任何操作。HTTP协议是面向请求的,因此如果没有浏览器要求,就无法将消息从服务器推送到浏览器。
浏览器只是无法确定会话是否已过期。如果您轮询服务器以检查会话是否已过期,则它将使会话保持活动状态,从而无法达到超时目的。
您可以在45分钟后仅使用客户端脚本进行重定向:
window.setTimeout(function() {
window.location.href = '/Timeout.aspx';
}, 1000*45*60);
Run Code Online (Sandbox Code Playgroud)
但是,这将仅根据自该浏览器窗口上次联系服务器以来的时间进行重定向。如果同一会话有多个浏览器窗口,则该会话实际上可能没有超时。
| 归档时间: |
|
| 查看次数: |
17530 次 |
| 最近记录: |