我有两个简单的登录和主控制器:
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
属性放置在类操作或方法上:
只要求授权用户访问整个类及其方法:
[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();
}
}