2011-06-13 8 views
5

自分のコントローラに配置するカスタムAuthorizationAttributeを作成しました。私はthis articleに続いた。私はOnAuthorizationメソッドでカスタム認証ロジックを実装しましたが、これはうまく動作します。ユーザーが承認に失敗すると、私は現在次のことを行っています。ユーザーが承認されていないときにAccessDeniedページにリダイレクト

// if authorization check fails... 
filterContext.Result = new HttpUnauthorizedResult(); 

これはユーザー名とパスワードの入力を求めるメッセージを表示します。

私の質問は、認証に失敗した場合にユーザーに「アクセスが拒否されました」タイプのページを送信するための推奨される方法は何ですか?

私はMVC3を使用しています。

答えて

2

public override void OnAuthorization(AuthorizationContext filterContext) 
... 
// if authorization check fails... 
filterContext.Result = new RedirectResult(AccessDeniedPage); 

編集:これは、単一のサイト上で動作するかもしれませんがロブConeryはASP.NET MVC: Securing Your Controller Actions

+3

リンクが壊れています:-( – JenonD

1

あなたは、ログインページでエラーコード401

5

HttpExceptionを投げることができ、ユーザーがすでにログインしているかどうかを確認し、アクセス拒否メッセージの代わりに、ログインプロンプトを表示することができます。私はまっすぐにリダイレクトするために行ってきました最後に

+0

にこれを詳細に記述した非常に良い記事を持っています、セキュリティトークンサービスが、あなたの信頼団体サイトに対するすべての役割/ユーザーアクセス権を暗黙的に理解し、非常に不正なIMOであることを望む場合を除き、このソリューションはシングルサインオンシステムではまったく機能しません。 –

+0

これまでのところ良い+1 – Har