httpモジュールが正しいページURLを取得できない

こんにちは、私は非常に尋ねる質問を持っています。私はアクセス権を行うためにhttpモジュールを使用しています。ユーザーが 'admin'であれば、ページを表示する権限を持っているとしましょう.HTTPモジュールは、ページURLに基​​づいてデータベースからアクセス権を取得します。その後、httpモジュールはユーザーにアクセスが許可されているかどうかを判断します。

ここに私のサンプルコードがあります:

 public void Init(HttpApplication context)
    {
        context.AcquireRequestState += new EventHandler(context_AcquireRequestState1);

    }



    void context_AcquireRequestState1(object sender, EventArgs e)
    {
        try
        {

           string requestUrl = application.Request.AppRelativeCurrentExecutionFilePath.ToString().Trim();
            //return last string of .aspx
         string   requestAspx = requestUrl.Substring(requestUrl.LastIndexOf('/') + 1).Trim();

    }

httpモジュールは数回実行されます。 URLを正しく取得できません。 たとえば、〜/ Module/Admin/Role/RoleManagementList.aspxが初めて取得されることがあります。 二度目は間違ったURLを取得する〜/ favicon.ico誰も私はこの問題を解決するのに役立つ?どうもありがとうございます

0

1 答え

あなたは "間違った" URLを取得していません。ユーザーのブラウザは、単に別のリソースを要求しています。 httpモジュールはhttpリクエストごとに実行されます。これはファビコン(ブラウザのURLに表示され、場合によってはリクエストされていない場合でも要求されることがあります)やイメージ、外部.css、外部の.jsファイルなど(ページがASP.NETスタックをバイパスしてIISによって直接処理されない限り)。これらのURLをすべてモジュール内で検討する必要があります。

Depending on how tightly you control your deployment environment,you may also/instead be able to exempt certain file extensions from every hitting asp.net by having IIS simply serve them directly. See http://msdn.microsoft.com/en-us/library/ms972953.aspx

0
追加された
こんにちは、ありがとうございます。正しいHTTP URLを取得するための解決策が得られましたか?たとえば、〜/ Module/Admin/Role/RoleManagementList.aspxなどのURLを取得したいと思いますか、またはmaybがhttpモジュールの別のステップで行うことができますか?
追加された 著者 user998405,
OK 。どうもありがとうございます
追加された 著者 user998405,
こんにちはnathan。お手伝いありがとうございます 。しかし、私はまだあなたに質問する1つの質問があります。 httpモジュールを使用してボタンを表示することはできますか?私はデータベースからのアクセス権を取得するとしましょう。それから私は削除することは許されていません。したがって、ページの表示されているすべての削除ボタンはfalseに設定されています。作成するにはどうすればよいですか?findControlメソッドを使用するMayb
追加された 著者 user998405,
あなたは間違った方法でそれについて考えています。あなたは要求のURLを与えられます - あなたは異なったURLを "得る"ことができません。あなたは、あなたが与えられたURLにどのように反応するかを決める必要があります。したがって、要件に応じて、たとえば、.aspxで終わらないURLを単純に渡すことにします。または単に「.ico」などで終わるURLを渡すこともできます。あなただけがあなたにどのように反応したいかを決めることができます。
追加された 著者 Nathan,
容易ではなく、確実に。個々のボタンを無効にする場合は、別の方法を使用する方がよいでしょう。メンバーシップAPIの使用を検討することもできます( msdn.microsoft.com/en-us/ライブラリ/ ff648345.aspx )をHttpContext.Current.User.IsInRole(...)と組み合わせて、実際のページコードでボタンを無効にします。しかし、一般的に、ロールベースのセキュリティを本当に実施するには、削除アクションを実行する実際のコードを中心にセキュリティチェックを行う必要があります。ユーザーフレンドリーなUIに適したボタンを無効にするだけで、許可なく削除することができるようにハッキングされる可能性があります。
追加された 著者 Nathan,