MVC5 EF6 UserRights

时间:2013-12-15 21:24:10

标签: asp.net-mvc rights-management

我想知道在MVC应用程序中检查实际登录用户权限的最佳做法是什么。我想在视图和控制器上执行此操作。

实际上,我可以检查实际登录的用户是否具有以下角色:

User.IsInRole("roleName");

我有权利的表。每个权利都包含名称和Enum权利表示。我想要完成的是IPrincipal或IIdentity的扩展方法,所以我可以检查用户的权利:

示例扩展方法:

    public static class MyPrincipal
    {
       public static string HasRight(this IPrincipal principal, EnumRight right)
       {
           // THIS would be place where I would check if a user have right with specific enum.
           return true/false;
       }
    }

然后在视图或控制器上我可以这样使用:

if(User.HasRight(EnumRight.AddDocuments) )
{
    //DO SOMETHING
}
  1. 这是好的做法还是我怎样才能更简单地做类似的机制?也许独立的静态类不是扩展名?

  2. 如何在我的扩展方法中获取实际用户ID,以便从数据库中获取检查用户是否拥有权限所需的任何数据?

1 个答案:

答案 0 :(得分:1)

通常,您将实施授权过滤器,并将其应用于您的操作方法。以下是link如何实施操作过滤器。