В настоящее время я пытаюсь написать свой собственный 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();
}