[英]asp.net mvc6 Authorization redirect do not work when user is not logged
[英]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.