簡體   English   中英

當用戶未登錄 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();
        }

    }

每次用戶未登錄時,我都想重定向到登錄/索引。我該如何實現? 非常感謝。

您可以在 ASP.NET-MVC 中使用Authorize屬性,該屬性作為Forms身份驗證的一部分。 為此,您需要首先在 web.config 中設置 forms 身份驗證:

<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()
        {
            //authenticate user
            
            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();
    }

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM