Microsoft.AspNetCore.Authorization.AuthorizeAttribute不包含“ IsAuthorized”方法

时间:2019-02-03 18:14:29

标签: c# asp.net-core attributes

我目前正在尝试编写自己的AuthorizeAttribute,因为我不能也不想使用内置函数。
在互联网上,我到处都找不到适合我的解决方案。 “ IsAuthorized”方法无处不在,似乎并不存在。顺便说一句:我没有HttpActionContext类。

我已经尝试解决其他名称空间的问题,但是没有成功。包括所需的“ AuthorizeAttribute”类的唯一名称空间是Microsoft.AspNetCore.Authorization。

using Microsoft.AspNetCore.Authorization;
using System;

namespace Project.PermissionManagement {
    public class PermissionControl : AuthorizeAttribute {
        private readonly Permission[] permissions;
        public Permission[] Permissions { get { return permissions; } }

        public PermissionControl(params Permission[] permissions) {
            this.permissions = permissions;
        }

        protected override bool IsAuthorized(HttpActionContext actionContext) {
            foreach (Permission requiredPermission in permissions) {
                if (!Globals.CurrentUser.Permissions.Contains(requiredPermission))
                    return false;
            }
            return true;
        }
    }
}

最初,该想法是使用属性保护任何方法。任何没有正确权限的用户都应重定向到错误页面。
看起来应该像这样:

[PermissionControl(Permission.RequiredPermission)]
void ActionForSpecialUsers() {
    DoSomething();
}

0 个答案:

没有答案