首页 > 解决方案 > Microsoft.AspNetCore.Authorization.AuthorizeAttribute 不包含“IsAuthorized”方法

问题描述

我目前正在尝试编写自己的 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();
}

标签: c#asp.net-coreattributes

解决方案


推荐阅读