我的应用程序需要为不同的团队提供不同级别的保护。例如,某人可能是一个团队的管理员,但可能只是另一个团队的观众。
理想情况下,我希望拥有一组很小的角色,但我希望为每个团队分配人员角色。即“Joe”可能是TeamA的管理员,但对TeamB具有Reader访问权限。
Asp.Net提供程序框架是否支持此功能?
- 亚光
更新:我的问题是“IsInRole”方法。它需要一个参数。除了黑客攻击(将两个项目连接在一起,比如团队ID和角色名称)还有其他方法可以解决这个问题吗?
答案 0 :(得分:1)
据我所知,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应从中获取数据的逻辑。
答案 1 :(得分:0)
不是开箱即用的。您需要创建自定义提供程序以支持此功能
这是创建自定义成员资格提供程序的示例 http://www.asp.net/learn/videos/video-189.aspx