Microsoft.AspNetCore.Authorization.AuthorizeAttribute не содержит метод «IsAuthorized» - PullRequest
0 голосов
/ 03 февраля 2019

В настоящее время я пытаюсь написать свой собственный 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();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...