当用户未登录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属性放置在类操作或方法上:

只要求授权用户访问整个类及其方法:

[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();
}
}

相关内容

  • 没有找到相关文章

最新更新