关于 ASP.NET Core 中的维护模式

Regarding Maintenance mode in ASP.NET Core

我正在使用 MVC6 开发 ASP.NET 核心网络应用程序。我想在我的网络应用程序中实施维护模式,这样只有特定类型的用户才能在维护模式下登录网络应用程序。例如,除角色 user 之外的所有用户都允许登录。为了实现此功能,我尝试了以下代码。

//Sign in user with provided username and password
var res = await _signInManager.PasswordSignInAsync(suser.UserName, user.Password, user.Remember, false);
if (res.Succeeded)
{
      //check if web app is under maintenance mode and if it is, then check the role of the user
      if (_env.IsEnvironment("Maintenance") && await _userManager.IsInRoleAsync(suser, "user"))
           return View("Maintenance"); //if user is in 'user' role redirect to maintenance view
      else
      {
          //else redirect to main page
      }
}

以上代码在特定用户尝试登录网络应用程序时执行。上述代码的问题在于,当用户已经登录并尝试访问 Web 应用程序时,它不会工作。在这种情况下,无论维护模式如何,它都将被重定向到 Web 应用程序的主页。当用户在维护模式下尝试访问网络应用程序时,如何注销已经登录的用户?

创建对每个请求执行相同检查的操作过滤器或中间件

要了解有关过滤器的更多信息,请查看此 link https://docs.asp.net/en/latest/mvc/controllers/filters.html