我有一个 MVC 应用程序,它使用声明授权,基于此处提供的精彩教程。在代码中,我覆盖了 ClaimsAuthorizationManager 的 CheckAccess 方法,以针对每个资源和操作实现我自己的逻辑
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 处理。我的问题是,如何在代码中处理此错误以向用户显示自定义错误页面。我见过很多不同的解决方案,比如这里或这里,但从未设法让它对我有用。