MVC3アプリケーションでグローバル認可のためにAuthorizeAttribute
から派生したクラスを使用しています。許可の失敗の理由を見つける方法
[CtsAuthorize(Roles = "systemadmin")]
public class CompanyController : CtsController
私はにリダイレクトしたい:私は今、私は、カスタムロールプロバイダを実装していると、コントローラ上で、より具体的な認証フィルタを配置開始したいと思い、このようfilters.Add(new CtsAuthorizeAttribute());
を介してグローバルフィルタとして使用しますロールベースの認証失敗のメッセージページ(理想的には、失敗したページのモデルプロパティを変更するだけです)が、ログインベースの失敗のログインページへのデフォルトのリダイレクトを保持します。以下の私のオーバーライドでは、認証の失敗の理由をどのように判断できますか?
protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext)
{
base.HandleUnauthorizedRequest(filterContext);
}
「ロールインのユーザー」チェックを複製できますが、これはこのフィルタで実行されたばかりです。私はちょうどフィルタからこれを学ぶ方法を見つけることができません。
「承認の失敗」とはどのようなことを考えていますか?これで認証失敗をグループ化していますか? –
@JeremyHolovacsでは、グローバルフィルタをそのまま使用して、リクエストが認証されていないときと、ユーザが指定されたロールにいないときにフィルタを 'Roles'で適用すると失敗します。 – ProfK
認証と認可を区別しないためのMSセキュリティフレームワークには障害があります。これはまったく異なるものです。私は短い答えは、ユーザーが認証されているかどうかを確認する(これはコンテキストを通して利用可能でなければならない)かどうかを確認し、役割をチェックする。これはあなたが探している細かさのレベルですか? –