У меня есть приложение MVC, которое использует авторизацию утверждений на основе отличного учебника, доступного здесь. В коде я переопределяю метод CheckAccess класса ClaimsAuthorizationManager, чтобы реализовать мою собственную логику для каждого ресурса и действия.
public class CustomAuthorisationManager : ClaimsAuthorizationManager
{
public override bool CheckAccess(AuthorizationContext context)
{
string resource = context.Resource.First().Value;
string action = context.Action.First().Value;
if (action == "Show" && resource == "Code")
{
bool livesInScotland = context.Principal.HasClaim(ClaimTypes.Country, "Scotland");
return livesInScotland;
}
return false;
}
}
И все работает нормально, за исключением того факта, что всякий раз, когда метод CheckAccess возвращает false, я получаю HTTP-ошибку 401.0 - Неавторизованный, которая, как я читал, может обрабатываться только IIS. Мой вопрос в том, как я могу обработать эту ошибку в коде, чтобы отобразить пользовательскую страницу ошибки. Я видел много разных решений, например здесь или здесь, но мне так и не удалось заставить его работать.