当用户未登录 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();
}
}
我有两个简单的登录和家庭控制器:
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();
}
}