42


Q 1. 私の理解FormsAuthenticationModuleでは、 はイベントにサブスクライブされているためAuthenticateRequest、このイベントが発生した後にのみFormsAuthenticationModule呼び出されます。しかし、次の引用は私を少し混乱させました。

  1. このAuthenticateRequestイベントは、構成された認証メカニズムが現在の要求を認証したことを通知します。

    • AuthenticateRequest上記の引用は、イベントが発生したときにリクエスト (別名ユーザー) が既に認証さ れていることを示唆していませんか?
  2. イベントをサブスクライブするとAuthenticateRequest、接続されたモジュールまたはイベント ハンドラーを処理する前に、要求が認証されることが保証されます。

    • 私がこの引用を理解している限り、 にサブスクライブするAuthenticatedRequestと、イベント ハンドラーはFormsAuthenticationModule?の前に呼び出されます。したがってApplication_AuthenticateRequest()、呼び出される前FormsAuthenticationModuleに呼び出されますか?


Q 2. 私が学んでいる本によるとApplication_AuthenticateRequest()、ユーザーが特定の役割のメンバーであるかどうかを内部で確認でき、そうでない場合は、ユーザーを自動的に追加できます。

    protected void Application_AuthenticateRequest(Object sender, EventArgs e)
    {
            if (User.Identity.IsAuthenticated && Roles.Enabled)
            {

                //here we can subscribe user to a role via Roles.AddUserToRole()
            }       
    }

上記のコードから判断すると、が呼び出さApplication_AuthenticateRequest()れた後に呼び出されますが、別の場所で同じ本がの前に呼び出されるFormsAuthenticationModuleことを意味します。Application_AuthenticateRequest()FormsAuthenticationModule

Application_AuthenticateRequest 認証が実行される直前に呼び出されます。これは、独自の認証ロジックを作成するための出発点です。


私は何が欠けていますか?


ありがとう

4

2 に答える 2

6

User オブジェクトへのアクセスが必要な場合は、使用することをお勧めします

protected void Application_Start()
{
    PostAuthenticateRequest += Application_PostAuthenticateRequest;
}

protected void Application_PostAuthenticateRequest(object sender, EventArgs e)
{
    if(User.Identity.IsAuthenticated)
    {
        //Do stuff here
    }
}
于 2012-02-20T12:03:31.343 に答える