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