2

Areas を使用して mvc アプリケーションを作成しています。これらの領域には異なる認証方法が必要です。

私は通常、認証に httpmodules を使用します。http モジュールでは、ユーザーが認証されているかどうかを確認し (通常は Cookie を使用します)、そうでない場合はリダイレクトします。

したがって、アプリケーション全体を認証するための httpmodule があり、その領域で認証するために別の httpmodule を登録したいと考えています。

私は試した:

  1. area フォルダー内の web.config ファイルを使用し、そこに httpmodule をリストします。
  2. web.config ファイルの場所セクションを使用します。

どちらも私にとってはうまくいきませんでした httpmodule は呼び出されませんでした。

  1. エリアの httpmodule を登録するにはどうすればよいですか。
  2. アプリ全体の httpmodule をオーバーライドするにはどうすればよいですか。
  3. これが間違った方法である場合、これを行うためのより良い方法は何ですか。

ありがとう

4

1 に答える 1

2

AuthorizeCore をオーバーライドするカスタム AuthorizeAttribute をいつでも記述できます。この関数では、いつでも特定の loginurl にリダイレクトできます。

public class CustomAuthorizationAttribute : AuthorizeAttribute
{
    private string notifyUrl = string.Format("{0}{1}", GeneralHelper.BaseSiteUrl, "Login");

    protected override bool AuthorizeCore(HttpContextBase httpContext)
    {
        if (httpContext.User.Identity.IsAuthenticated)
        {
            // get userinformation
            return true;
        }

        httpContext.Response.Redirect(NotifyUrl);
        return false;
    }
}

リダイレクトを含めない場合は、web.config で定義された loginurl にリダイレクトされます。

于 2012-01-18T11:25:18.260 に答える