因为 RoleProvider 接口似乎将角色视为简单的字符串,所以我想知道是否有任何非 hacky 方法可以为每个用户应用角色的可选值。
我们当前的登录管理系统将角色实现为键值对,其中值部分是可选的,通常用于阐明或限制角色授予的权限。
例如,角色“editor”可能包含用户“barry”,但对于“barry”,它将具有可选值“raptors”,系统会将其解释为表示 Barry 只能编辑在“raptors”下提交的文章类别。
我在其他地方看到过一个建议,即简单地创建额外的分隔角色,例如“editor.raptors”或类似的角色。这并不理想,因为它会大大增加角色的数量,而且我可以说要替换我们当前的实现将是一个非常困难的销售(这也非常不理想,但具有定制的优势与我们的用户数据库一起工作)。
我已经可以看出,上面提到的连接方法将涉及大量繁琐的字符串拆分和部分匹配。
有没有更好的办法?
编辑:我最初的目标是使用更多内置的 ASP.NET 功能。例如,通过<authorization/>
Web.config 中的元素控制访问。据我所知,这样做需要自己实现角色。除了这一限制之外,我们当前系统的身份验证概念似乎非常适合。
回答 mnemosyn 的问题
- 是的。我们有一个用于用户、应用程序及其授权的中央数据库。这是一个核心系统,无法绕过它。
- 目前我们的系统是没有层次的,实际上维护起来还是很费功夫的。创建应用程序时,会定义一组授权(例如,“admin”、“user”、“poweruser”、“gatekeeper”、“keymaster”等)。然后,用户将与那些具有可选值的授权相关联,以实现用户和(特定于应用程序的)授权的唯一组合。
- 您能否详细说明您所说的这些“类别”?