3

ASP.NET でマルチテナント Web サイトを構築しており、各顧客が独自のセキュリティ モデルを構成できるようにする必要があります。独自の役割を定義し、ユーザーをそれらの役割に配置できる必要があります。これを行う最善の方法は何ですか?

次のようなコードを持つ page_load イベントの簡単な例がたくさんあります。

  if (!user.InGroup("Admin")
       Response.Redirect("/NoAccess.aspx");

しかし、それはコード内のグループと権限をハードコーディングします。ユーザーが構成できるようにするにはどうすればよいですか?

4

2 に答える 2

4

おそらく、構成可能なロールをDBテーブルに配置します。ここで、ロールとテナントを格納し、次にPagePermissionsを別のテーブルに格納します。次に例を示します。

Table "Role"
RoleId, TenantId, Role

Table "PagePermissions"
PageId, RoleId

Table "UserRoles"
UserId, RoleId

次に、ページの読み込みで、ユーザーがそのページの権限を持つRoleIdに属しているかどうかを確認します。次に例を示します。

Select PageId FROM 
UserRoles UR INNER JOIN PagePermissions PP
ON UR.RoleId = PP.RoleID
WHERE UR.Userid = @UserId AND PP.PageID = @PageId

行が返されない場合は、ユーザーを拒否します。

于 2008-10-07T12:54:51.430 に答える
0

構成ファイルで簡単に管理できる Web サイトの構成システムを作成します。型付きメンバーを取得して、このように使用できる場所。

foreach(var group in ThisPageConfiguration.AcceptedRoleNames)
if (user.IsInRole(group))
...

その後、各顧客は構成ファイルでサイトを構成できます...そして、構成したい他のすべての種類のもの。

于 2008-10-07T12:37:03.850 に答える