Asp.net mvc MVC5 EF6用户权限

Asp.net mvc MVC5 EF6用户权限,asp.net-mvc,rights-management,Asp.net Mvc,Rights Management,我想知道在MVC应用程序中检查实际登录用户权限的最佳实践是什么。我想在视图和控制器上这样做 实际上,我可以检查实际登录的用户是否担任这样的角色: User.IsInRole("roleName"); if(User.HasRight(EnumRight.AddDocuments) ) { //DO SOMETHING } 我有一张桌子。每个权限都包含名称和枚举权限表示。我想完成的是IPrincipal或IIdentity的扩展方法,这样我就可以像这样检查用户的权限: User.IsI

我想知道在MVC应用程序中检查实际登录用户权限的最佳实践是什么。我想在视图和控制器上这样做

实际上,我可以检查实际登录的用户是否担任这样的角色:

User.IsInRole("roleName");
if(User.HasRight(EnumRight.AddDocuments) )
{
    //DO SOMETHING
}
我有一张桌子。每个权限都包含名称和枚举权限表示。我想完成的是IPrincipal或IIdentity的扩展方法,这样我就可以像这样检查用户的权限:

User.IsInRole("roleName");
if(User.HasRight(EnumRight.AddDocuments) )
{
    //DO SOMETHING
}
扩展方法示例:

    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;
       }
    }
然后在视图或控制器上,我可以这样使用:

User.IsInRole("roleName");
if(User.HasRight(EnumRight.AddDocuments) )
{
    //DO SOMETHING
}
  • 这是一个很好的练习,或者我如何做?也许独立的静态类不是扩展

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


  • 通常,您将实现一个授权过滤器,并将其应用于您的操作方法。下面是如何实现操作过滤器的示例