基于ASP.NET MVC 5中的角色的单个页面授权

时间:2014-02-19 07:52:41

标签: asp.net asp.net-mvc authorization asp.net-mvc-5 asp.net-roles

我是ASP.NET MVC的新手,我正在尝试构建一个使用MVC 5的内置授权方法的网站。

这是我到目前为止所做的:

  1. 在AspNetUsers表中创建了许多用户。
  2. 在AspNetRoles表中创建了许多角色。
  3. 通过连接RoleID和UserID,通过AspNetUserRoles表为用户分配角色。
  4. 现在,要将单个页面设置为仅向具有admin-role的用户显示某些内容,否则将其隐藏,我已完成此操作:

    @if(User.IsInRole("Admin")) 
    {
        <p>You are logged in as an admin.</p>   
    } else
    {
        <p>You are not logged in as an admin.</p>
    };
    

    这样做可以,还是这样糟糕?我已经玩了很长时间了,它按预期工作(据我所知)。

    我知道我可以创建CustomAuthorizationAttributes并将它们分配给Controller中的ActionMethods,但我对此语法并不十分熟悉。

1 个答案:

答案 0 :(得分:2)

如果您对语法感到满意,这很好。

但您不能忘记使用Authorize属性保护视图本身。您可以使用以下默认值

[Authorize(Roles = "Admin")]
public ActionResult Register()
{
...
return View();
}