1

このコードを使用して、リクエストがページからのものかどうかを確認し、そうでない場合はどこかにリダイレクトします。

string referer = Request.ServerVariables["HTTP_REFERER"];
            if (string.IsNullOrEmpty(referer))
            {
                Response.Redirect("/UnauthorizedAccess.aspx");
            }

それは機能していますが、それが完璧な解決策であるかどうかはわかりません.しかし、私は自分のページの1つの読み込みイベントでこれをチェックしています.それは良いアプローチです.誰かが私を正しい方向に向けることができます.どんな提案も大歓迎です.

4

2 に答える 2

2

この種の一般的なコードを含むページが多数ある場合、考えられる解決策の 1 つMyPageは、標準Pageクラスの子として独自のクラスを作成することです。あなたMyPageは次のようなものを使うことができます:

Page_Load(object sender, EventArgs e)
{
string referer = Request.ServerVariables["HTTP_REFERER"];
            if (string.IsNullOrEmpty(referer))
            {
                Response.Redirect("/UnauthorizedAccess.aspx");
            }
base.Page_Load(sender, e);
}

次に、どのページもMyPage、.NET の標準クラスではなく、この独自のクラスから継承できます。

このようにして、共通コードは 1 つの場所に存在します。変更があった場合は、そこでのみ変更する必要があります。

または別の可能性として、マスター ページの使用を検討できます。

于 2012-06-20T11:18:32.277 に答える
2

一連のページの OnLoad で実行したいロジックがある場合。おそらく、BasePageから派生しPage、ロジックを内部に持つ を作成する必要があります。BasePage次に、そのロジックが必要なすべてのページを、通常の の代わりに派生させることができますPage

別のアプローチは、マスター ページを使用することができます。

注: OPの追加コメントを読んだ後。マスター ページを使用する際に注意すべきことの 1 つは、コンテンツ ページの Page_Load イベントの後にマスター ページの Page_Load イベントが発生することです。つまり、ライフサイクルは次のようになります。

マスター ページ初期化イベント

コンテンツ ページの初期化イベント

コンテンツ ページ読み込みイベント

マスター ページ読み込みイベント

response.redirect がユーザーを同じマスターページ (および同じ「検証」チェック) を持つ別のページに移動すると、無限ループに陥る可能性があります:)

于 2012-06-20T11:14:40.483 に答える