0

ASP.net WebForms プロジェクトでは、現在フォーム認証を使用していますが、クライアントは代わりに Windows 認証を使用したいと考えています。そこで、Windows 認証を使用するように web.config を変更しました。ただし、アプリケーションは、Web ページにアクセスする前に、ユーザー入力とセッションへの入力を必要とします。現在、ログインページのポストバックでこれを行っています。

Windows 認証には「ログイン」ページがないため、どうすればこれを実現できますか? セッションが正しく設定されている場合、On_Init イベントであるすべてのページをチェックする必要がありますか?

4

2 に答える 2

1

すべての単一ページで使用可能なセッション内の特定のデータが必要な場合、最も簡単な方法は、セッションが使用可能な初期のパイプライン イベントの 1 つで状態をチェックする専用モジュールを用意することです (要求状態の取得イベントが最も適しているように思えます)。

public class CustomConditionCheckModule : IHttpModule
{
    public void Init( HttpApplication context )
    {
        context.AcquireRequestState += new EventHandler( acq_req_state );
    }        

    public void acq_req_state( object sender, EventArgs e )
    {
        // check your condition there - the data is in session
        var session = HttpContext.Current.Session;
        if ( ... the condition ... )
           Response.Redirect( "~/anonymous.page.aspx" ); 
    }
}

次に、匿名でアクセスできるページも必要です (web.configこれには のセクションが必要です)。

<location path="anonymous.page.aspx">
  <system.web>
    <authorization>
      <allow users="*" />  
    </authorization>
  </system.web>
</location>
于 2013-10-23T14:04:52.697 に答える