0

ユーザー、メンバー、管理者の 3 種類のユーザーを持つ ASP.NET Web アプリケーションがあります。

ここで、ユーザーのタイプをチェックできるすべてのページのメソッドを作成したいと思います。このページへのアクセスが許可されていない場合、ユーザーはホームページにリダイレクトされます。

現在、すべてのページの Page_Load にこの種のコードがあります。

if (Session["userID"] != null)
        {
            User user = userDALC.Read(Convert.ToInt32(Session["userID"]));

            if (user.Type == 1)
            {
                Response.Redirect("~/Home.aspx");
            }
        }
        else
        {
            Response.Redirect("~/Home.aspx");
        }

このページはメンバーと管理者 (2,3) のみに表示されます。ユーザー (1) がこのページにアクセスしたい場合、リダイレクトされます。

したがって、このコードは非常に頻繁に繰り返されるため、私の使用にはまったく適していないことは明らかです。(すべてのページで)

さて、私の考えは、ページへのアクセスを許可するユーザー タイプを設定できるプロパティ「パーミッション」を各ページに追加することでした。また、すべてのページでこの権限プロパティをチェックするメソッドも必要です。

このようなプロパティを追加する方法と、このメソッドを追加できるアイデアはありますか? (多分マスターページ?)

4

1 に答える 1

0

このようなメソッドを実装できる場所がいくつかあります。マスターページのページ読み込みでは機能します。

コア Page クラスから継承する独自の Page クラスを作成し、そこにロジックを実装して、カスタム Page クラスを使用することができます。

ページからロジックを完全に取り出して、global.asax のBegin_Requestハンドラーで実行できます。ここで注意すべきことは、このメソッドは、アプリケーションによって処理されるすべてのリクエストに対して実行されることです。これには、javascript、css、画像、ドキュメントなどのリクエストが含まれる場合があります。また、この時点ではページ オブジェクトにアクセスできないため、 URL に基づいて、承認を確認する要求を特定する必要があります。

さらに進んで、ユーザー ID とリクエストの詳細に基づいて承認をチェックするHttpHandlerを実装することもできます。ロジックは、global.asax でチェックを実行するのと似ています。

ただし、既に指摘したように、asp.net は、ユーザー ロールを使用して、これらすべてをすぐに使用できるように提供します。

于 2012-10-24T15:41:11.787 に答える