当用户未登录 ASP.NET MVC 时,重定向到页面的最简单方法是什么?

Which is the simplest way to redirect to page when user is not logged in in ASP.NET MVC?

我有两个简单的登录和家庭控制器:

public class LoginController : Controller
{
        public LoginController()
        {
            
        }

        public IActionResult Index()
        {
            return View();
        }
}

public class HomeController : Controller
    {
        public HomeController()
        {
            
        }

        public IActionResult Index()
        {
            return View();
        }

    }

每次用户未登录时,我都想重定向到 login/index。我该如何实现?非常感谢。

您可以在 ASP.NET-MVC 中使用 Authorize 属性作为 Forms 身份验证的一部分。为此,您需要先在 web.config:

中设置表单身份验证

<system.web> 元素下,放置:

<authentication mode="Forms">
  <forms loginUrl="~/Login/Index" timeout="45" slidingExpiration="true" cookieless="UseCookies" protection="All" requireSSL="false" enableCrossAppRedirects="false" defaultUrl="~/Home/Index" path="/" />
</authentication>

现在在您的 LoginController 中,当您对用户进行身份验证时,它将是这样的:

public class LoginController : Controller
{
        public LoginController()
        {
            
        }

        public IActionResult Index()
        {               
            return View();
        }
        
        [HttpPost]
        [AllowAnonymous]
        public IActionResult ValidateUser()
        {
          //your user authentication logic here
          if(userAuthenticated)
          {
             FormsAuthentication.SetAuthCookie(userModel, false);
          }
  
           return View("Index");
        }
}

一旦您验证了您的用户,您就可以根据需要将 Authorize 属性放在 class 操作或方法上:

仅要求授权用户访问整个 class 及其方法:

[Authorize]
public class HomeController : Controller
{
    public HomeController()
    {
        
    }

    public IActionResult Index()
    {
        return View();
    }

}

要求用户只能获得 Index 方法的授权:

public class HomeController : Controller
{
    public HomeController()
    {
        
    }

    [Authorize]
    public IActionResult Index()
    {
        return View();
    }

}