消息来源说,如果ClaimsAuthorizationManager
's的子类CheckAccess
返回 false,根据框架设计,它会引发安全异常。
如果我想用 (例如) 来装饰 ApiController 的函数,似乎没有办法捕捉到这个错误[ClaimsPrincipalPermission(SecurityAction.Demand, Operation="Read", Resource="Something")]
。
我已经创建了一个示例 AuthorizationManager,派生了 ClaimsAuthorizationManager,并在 web.config 中注册了它。此配置部分有效。
public class AuthorizationManager : ClaimsAuthorizationManager
{
public override bool CheckAccess(AuthorizationContext context)
{
return false; // just to show that it will throw the security exception
}
}
因此,我将授权设置为无论如何都会失败,但我想将 401 响应返回给用户,而不是那个“侵入性”500(安全异常返回为内部服务器错误)。
似乎没有人在任何地方都对此有答案,而且似乎我们只会满足于 500 来向客户传达未经授权的访问。