0

我有一个 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 处理。我的问题是,如何在代码中处理此错误以向用户显示自定义错误页面。我见过很多不同的解决方案,比如这里这里,但从未设法让它对我有用。

4

1 回答 1

0

您可以实现IHttpModule。可以在此处找到实施指南。httpmodule 的好处是您可以捕获几乎任何 HTTP 响应并使用它做您想做的事情。

或者你可以看看这个 SO question。也许你会更喜欢它。

于 2014-04-15T19:35:20.793 回答