如何动态添加视图或控制器的权限?

时间:2018-01-24 15:01:49

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

在我所有的asp.net mvc项目中,通过使用基于[Authorize]属性的自定义类来设置控制器的权限。For example:

但是,如果我想要一个可以授予视图访问权限的管理员角色,而不是经历必须触摸控制器来添加/删除角色,重新编译和将更改推送到生产的麻烦,该怎么办?我该怎么做呢?

1 个答案:

答案 0 :(得分:1)

正如所讨论的那样。试试下面的内容。

在控制器中,因为我确定你知道。

[PermissionsFilter("CanAccessMyView")]
public ActionResult ReturnMyView () 
{
   //etc..
}

然后,在您的自定义类

 public class PermissionsFilter : AuthorizeAttribute
    {
        private readonly PermissionManager _permissionsManager;

        public PermissionsFilter(string permissionName)
        {
            _permissionName = permissionName;
            _permissionsManager = new PermissionServiceManager();
        }

        public override void OnAuthorization(AuthorizationContext filterContext)
        {
            if (!_permissionServiceManager.CanAccessPermission(_permissionName))
            {
                var urlHelper = new UrlHelper(filterContext.RequestContext);
                var url = urlHelper.Action("Unauthorised", "Home");
                filterContext.Result = new RedirectResult(url);
            }
        }
    }

权限管理器正在查询数据库或可能是会话信息以查看用户用户是否具有访问权限。

希望有所帮助。