1 回答

TA貢獻1868條經驗 獲得超4個贊
我找到了解決辦法。而不是這個:
public class AuthorizeRolesAttribute : AuthorizeAttribute
{
public AuthorizeRolesAttribute(params Permission[] permissions)
{
Roles = GetRoles(permissions);
}
}
我現在有這個:
public class AuthorizeRolesAttribute : Attribute, IAuthorizationFilter
{
private readonly Permission[] permissions;
public AuthorizeRolesAttribute(params Permission[] permissions)
{
this.permissions = permissions;
}
public void OnAuthorization(AuthorizationFilterContext context)
{
string[] roles = Authentication.GetRoles(permissions).Split(",");
bool allowed = context.HttpContext.User.Claims.Any(c => c.Type.Contains("role") && roles.Contains(c.Value));
if (!allowed)
context.Result = new ForbidResult();
}
}
- 1 回答
- 0 關注
- 105 瀏覽
添加回答
舉報