在会话超时后重定向回登录页面 ASP.NET MVC 6
本文关键字:ASP NET MVC 登录 超时 会话 重定向 | 更新日期: 2023-09-27 18:31:28
我想在会话超时后自动将控制权重定向到我的登录页面。
到目前为止,我已经添加了
services.AddCaching();
services.AddSession(options => {
options.IdleTimeout = TimeSpan.FromMinutes(20);
options.CookieName = ".AIM";
});
到我的startup.cs
文件。
任何人都可以让我知道如何在会话超时后自动转移到登录页面,而不是单击任何按钮或链接。我目前正在使用 MVC6 ASP。NET5
如果您谈论的是"身份验证会话"(基本上是一个身份验证cookie),那么一旦它(cookie)过期,下次您尝试访问任何标有AuthorizeAttribute的页面时,您将被自动重定向到登录页面。
如果你在谈论常规会话,你可以编写一些JavaScript来执行AJAX轮询以确定会话是否处于活动状态
。控制器代码:
[HttpPost]
public JsonResult IsSessionAlive()
{
if (Session.Contents.Count == 0)
{
return this.Json(new{ IsAlive = false}, JsonRequestBehavior.AllowGet)
}
return this.Json(new{ IsAlive = true}, JsonRequestBehavior.AllowGet)
}
客户端 JavaScript
function IsSessionAlive(){
$.post( "SomeController/IsSessionAlive", function( data ) {
if(!data.IsAlive)
{
//If you may need to logout current user first than:
$.post( '@Url.Action("LogOut","Account")', function( data ) {
window.location.href = '@Url.Action("Login","Account")';
});
//if you don't need the logout:
window.location.href = '@Url.Action("Login","Account")';
}
});
}
$(function(){
//set interval to 5 minutes
window.setInterval(IsSessionAlive, 300000);
})