asp.net - Multi-Tenancy ASP.NET 网站中的用户可配置安全性

标签 asp.net security multi-tenant

我们正在 ASP.NET 中构建一个 Multi-Tenancy 网站,我们必须让每个客户配置自己的安全模型。他们必须能够定义自己的角色,并将用户置于这些角色中。执行此操作的最佳方法是什么?

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

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

但是,在代码中对组和权限进行硬编码。我怎样才能让它成为用户可配置的?

最佳答案

也许将可配置的角色放在一个数据库表中,您在其中存储角色和租户,然后将 PagePermissions 放在另一个表中,例如:

Table "Role"
RoleId, TenantId, Role

Table "PagePermissions"
PageId, RoleId

Table "UserRoles"
UserId, RoleId

然后在页面加载中检查User是否在对该页面有权限的RoleId中,例如:

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

如果没有返回行则拒绝用户。

关于asp.net - Multi-Tenancy ASP.NET 网站中的用户可配置安全性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/178210/

相关文章:

c - Shellcode中的Syscall无法运行

algorithm - 选择对暴力攻击更有弹性的密码

sql - 在多个 Oracle 服务器上运行相同的 sql 查询和聚合结果的工具

grails - Grails模式 Multi-Tenancy 模式:GORM监听器仅与默认租户一起使用

mysql - MySQL推断随机查询的外键关系

c# - 在 ASP.net MVC 中使用 Entity Framework 创建模型时如何从单个 View 中的两个表调用数据

c# - 无法通过 302 重定向在 FireFox/Chrome 中读取 cookie,但在 IE 中有效

asp.net - 无法加载 DLL 或其依赖项 Azure

java - 如何在 java.security 和策略文件中指定平台独立路径?

c# - HTTP 错误 503。80 端口已经空闲时服务不可用