Источники говорят, что если дочерний класс ClaimsAuthorizationManager
CheckAccess
возвращает false, то при разработке структуры он генерирует исключение безопасности.Производные претензииAuthorizationManager.CheckAccess Возврат False в ASP.net MVC Web API
Невозможно поймать эту ошибку, если я хочу украсить функцию 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 сообщали о несанкционированном доступе к клиентам.
ли вы достичь лучшего решения? Неверно возвращать 500, когда он, очевидно, должен быть 401. Думая, что мне лучше реализовать пользовательский AuthenticationFilter, потому что я могу легко вернуть 401 из одного из них. – Farinha