多租户ASP.NET网站中的用户可配置安全性

时间:2008-10-07 12:29:19

标签: asp.net security multi-tenant

我们正在ASP.NET中构建一个多租户网站,我们必须让每个客户配置他们自己的安全模型。他们必须能够定义自己的角色,并将用户置于这些角色中。这样做的最佳方式是什么?

有很多简单的page_load事件示例,其代码如下:

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

但是硬编码代码中的组和权限。如何让用户配置?

2 个答案:

答案 0 :(得分: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

如果没有返回任何行,则拒绝该用户。

答案 1 :(得分:0)

我会为网站创建一个配置系统,可以在配置文件中轻松管理。你可以在哪里获得打字成员并使用这样的。

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

然后,每个客户都可以在他们的配置文件中配置他们的网站...以及您想要配置的其他类型的东西。