在会话超时后重定向回登录页面 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

在会话超时后重定向回登录页面 ASP.NET MVC 6

如果您谈论的是"身份验证会话"(基本上是一个身份验证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);
})