MVC4的基本登录/授权

本文关键字:授权 登录 MVC4 | 更新日期: 2023-09-27 17:50:52

我有两个控制器在我的MVC4应用程序,我想要求用户登录到访问;一个类似"管理"的区域。

我有一个数据库链接类,在c#中为我处理身份验证,这意味着我可以做这样的事情:

LoginUtility lu = new LoginUtility();
if(lu.Login("username", "password") == true){
   // User is genuine
} else {
   // Login failed
}

我想把它连接到MVC4,这样我就可以把[Authorize]属性应用到这两个控制器上。

MVC4的基本登录/授权

我发现做自定义登录逻辑相当痛苦。您需要做的是扩展AuthorizeAttribute,以便您可以在控制器/操作上使用它,并覆盖AuthorizeCore。如果您需要自定义逻辑从请求中提取用户名和密码,您可以通过在OnAuthorization覆盖中设置HttpContext上的User属性来实现。

您应该使用一个基本的Web应用程序模板,它为您提供了编辑用户和使用身份验证的控制器。然后,您将能够允许某些控制器,或控制器的某些操作。对于控制器,你只需要在控制器的定义前加上[Authorize(Roles = "Admin")]标签,就可以允许Admin角色执行这个操作。

在你的网页。配置add:

<authentication mode="Forms">
  <forms loginUrl="login.aspx" />
</authentication>

在你的控制器中:

LoginUtility lu = new LoginUtility();
if(lu.Login("username", "password") == true){
 FormsAuthentication.SetAuthCookie(...);
}