这个问题通常是由于在设置Authorization时没有正确调用IAuthorizationFilter的OnAuthorization方法导致的。可通过以下代码示例解决:
public class CustomAuthorizationAttribute : Attribute, IAuthorizationFilter { public void OnAuthorization(AuthorizationFilterContext context) { // 执行必要的授权操作
if (!IsAuthorized(context))
{
// 未通过授权,返回401
context.Result = new UnauthorizedResult();
}
}
private bool IsAuthorized(AuthorizationFilterContext context)
{
// 在此处执行自定义授权逻辑
return true; // 根据你的授权逻辑返回true或false
} }
应该将此类作为自定义授权的特性标记,并将其添加到Controller的Action方法或Controller类上。例如:
[CustomAuthorization] public class MyController : Controller { public IActionResult MyAction() { // 在未通过授权时,这里的代码将不会被执行 return View(); } }