0

Windows認証を使用してイントラネットアプリケーションをセットアップしています。ほとんどのアプリケーションと同様に、アプリケーションの特定の部分は特定の役割にのみアクセスできます。目的の役割を持たないユーザーがその領域にアクセスしようとすると、わかりやすい「このページを表示する権限がありません」ビューが表示されます。承認属性を拡張するためのガイドとなるいくつかのリソースを検索して調べました。私はそのアプローチを試しましたが、それは単に機能しません。それでもIISエラーメッセージが表示され、このカスタム属性のブレークポイントがヒットすることはありません。ロールのユーザーがページにアクセスしても、拡張属性のブレークポイントはヒットしません。だから、私は何かが足りないのだろうか?これは私が持っているものです-

    [AttributeUsage(AttributeTargets.Class | AttributeTargets.Method)]
public class AuthorizeRedirect : AuthorizeAttribute
{

    private const string IS_AUTHORIZED = "isAuthorized";
    public string RedirectUrl = "~Areas/Errors/Http401";


    protected override bool AuthorizeCore(HttpContextBase httpContext)
    {
        bool isAuthorized =  base.AuthorizeCore(httpContext);
        httpContext.Items.Add(IS_AUTHORIZED, isAuthorized);
        return isAuthorized;
    }

    public override void OnAuthorization(AuthorizationContext filterContext)
    {
        base.OnAuthorization(filterContext);

        var isAuthorized = filterContext.HttpContext.Items[IS_AUTHORIZED] != null ? Convert.ToBoolean(filterContext.HttpContext.Items[IS_AUTHORIZED]) : false;

        if(!isAuthorized && filterContext.RequestContext.HttpContext.User.Identity.IsAuthenticated)
        {
        filterContext.RequestContext.HttpContext.Response.Redirect(RedirectUrl);
        }

    }
}

コントローラー-

    [AuthorizeRedirect]
    [HttpPost, ValidateInput(true)]
    public  ActionResult NewPart(PartsViewModel vmodel) {..}

何か案は?

ありがとう

4

1 に答える 1