0

AuthorizeAttributeMVC3 アプリケーションでグローバル認証用にから派生したクラスを使用しています。グローバルフィルターとして使用しますfilters.Add(new CtsAuthorizeAttribute());

カスタム ロール プロバイダーを実装したので、次のように、より具体的な承認フィルターをコントローラーに配置したいと考えています。

[CtsAuthorize(Roles = "systemadmin")]
public class CompanyController : CtsController

ロール ベースの認証エラーの場合はメッセージ ページにリダイレクトしたい (理想的には失敗したページのモデル プロパティを変更するだけ) が、ログイン ベースのエラーの場合はログイン ページへのデフォルトのリダイレクトを保持します。以下のオーバーライドで、認証失敗の理由をどのように判断できますか?

protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext)
{
    base.HandleUnauthorizedRequest(filterContext);
}

「ロール内のユーザー」チェックを複製できますが、まさにこのフィルターによって実行されたばかりです。フィルターからこれを学習する方法がわかりません。

4

1 に答える 1

0

指定されたコンテキスト引数を使用して、ユーザーが認証されているかどうかを確認できます。その後、ロールをローカルで決定できます。

于 2012-04-20T14:42:56.853 に答える