我的应用程序需要能够在不同级别为不同团队提供保护。例如,某人可能是一个团队的管理员,但可能只是另一个团队的查看者。
理想情况下,我希望拥有一个单一的、一小组角色,但我希望将人员分配给每个团队的不同角色。即“Joe”可能是 TeamA 的管理员,但拥有 TeamB 的读者访问权限。
Asp.Net 提供者框架会支持这个吗?
——马特
更新:我的问题是“IsInRole”方法。它需要一个参数。除了破解它(将两个项目连接在一起,如团队 ID 和角色名称)之外,还有其他方法可以解决这个问题吗?
据我所知,就RoleProvider
类的工作方式而言,没有针对角色的分组,但是没有理由不能在数据源中实现分组结构。但是 RoleProvider 确实支持不同的应用程序名称,因此可以使用它来提出某种方法,将应用程序划分为被标识为不同的逻辑组,从而为它们分配不同的角色。
编辑:
作为对您的编辑的回应,您的数据库中可能具有如下结构
Group Table Access Table Role Table
id | name id | name group_id | access_id | name
----------- ------------ ---------------------------
1 Team A 1 Guest 1 1 Team A Guest
2 Team B 2 User 1 2 Team A User
3 Admin 1 3 Team A Admin
有一种机制,用于在插入新行时更新表name
中的字段。Role
实现自定义 RoleProvider 非常简单。您只需要继承RoleProvider
并覆盖您需要的方法,编写 RoleProvider 应从何处获取数据的逻辑。
不是直接开箱即用。您需要创建一个自定义提供程序来支持此功能
这是创建自定义会员提供程序的示例 http://www.asp.net/learn/videos/video-189.aspx