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) {..}
何か案は?
ありがとう