ホームページ  >  記事  >  バックエンド開発  >  ASP.NET の URL フィルタリング実装コード

ASP.NET の URL フィルタリング実装コード

高洛峰
高洛峰オリジナル
2017-01-21 15:11:562236ブラウズ

以下はクラスの定義です。

using System;
 using System.Web;
 using System.Web.SessionState;

 namespace QTJZ
 {
     public class Filters : IHttpModule, IRequiresSessionState
     {
         public void Dispose() { }

         public void Init(HttpApplication application)
         {
             application.AcquireRequestState += new EventHandler(application_AcquireRequestState);
         }

         public void application_AcquireRequestState(object sender, EventArgs e)
         {
             HttpApplication application = sender as HttpApplication;
             HttpRequest request = application.Request;
             HttpResponse response = application.Response;

             string url=request.CurrentExecutionFilePath.Trim('/');
             string suffix = request.CurrentExecutionFilePathExtension.Trim('.');

             if (!url.Equals("Default.htm") && (suffix == "aspx" || suffix == "htm"))
             {
                 object sessionObj = application.Context.Session == null ? null : application.Session["useID"];
                 if (sessionObj==null)
                 {
                     response.Redirect("~/Default.htm");
                 }
             }
         }
     }
 }

フィルター効果を実現するには、Filters クラスで IHttpMoeld インターフェイスを実装する必要があります。このインターフェイスを実装するには、Dispose と Init の 2 つのメソッドがあります。 Init のパラメータは HttpApplication 型のインスタンスです。このインスタンスを使用してイベントを登録します。 URL がフィルタリングされたため、AcquireRequestState イベントが登録されます。同様のイベントは次のとおりです

ASP.NET の URL フィルタリング実装コード

リダイレクト先の URL を取得するにはリクエストの CurrentExecutionFilePath 属性を使用し、リクエストされたファイルのサフィックスを取得するには CurrentExecutionFilePathExtension を使用します。判断に使用されるかどうかは、ニーズによって異なります。ここで行っているのは、リクエスト中にセッションが存在するかどうかを判断することです。存在しない場合は、ログイン ページに戻ります。 Session が使用されるため、ページを開くと例外がスローされます。例外メッセージは「このコンテキストではセッション状態を使用できません。」です。IRequiresSessionState インターフェイスを実装した後は、例外はスローされません。

さらに、構成ファイル Web.config の ノードの下に次のコードを追加する必要もあります

<httpModules> 
<add name="filters" type="QTJZ.Filters"/> 
</httpModules>

type 属性は、上記の Filters クラスの完全修飾名です

その他の URL フィルタリングASP.NET の実装コードに関する記事については、PHP 中国語 Web サイトに注目してください。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。