因为RoleProvider接口似乎只将角色视为简单字符串,所以我想知道是否有任何非用户可以在每个用户的基础上为角色应用可选值的方法。扩展ASP.NET角色提供者
我们当前的登录管理系统将角色实现为键值对,其中值部分是可选的,通常用于阐明或限制角色授予的权限。例如,“编辑者”角色可能包含用户'barry',但对于'barry',它将有一个可选值'raptors',系统会解释这意味着Barry只能编辑下面提交的文章'猛禽'类。
我在其他地方看到了一个建议来简单地创建额外的分隔角色,比如'editor.raptors'或somesuch。这并不是真的很理想,因为它会大大增加角色的数量,我可以说这将是一个非常难以推销的替代我们目前的实现(这也是非常不理想,但具有定制的优势与我们的用户数据库一起工作)。
我可以告诉你,上面提到的连接方法会涉及很多繁琐的字符串分割和部分匹配。
有没有更好的方法?
编辑:我最初的目标是在内置ASP.NET功能使用较多。例如,通过Web.config中的<authorization/>
元素控制访问。据我所知,这样做需要自己实施角色。除了这一限制之外,我们目前的系统认证概念似乎很适合。
回答mnemosyn的问题
- 是。我们有一个用于用户,应用程序及其授权的中央数据库。这是一个核心系统,并没有围绕它。
- 目前我们的系统不是分层的,实际上需要花费很多精力来维护。创建应用程序时,会定义一组授权(例如'admin','user','poweruser','看门人','keymaster'等)。然后,将用户与具有可选值的授权关联起来,以实现用户和(特定于应用程序)授权的独特组合。
- 你能详细说明你说的这些'类别'吗?
我已更新我的问题以解决您提出的一些问题。 – 2010-03-29 03:07:33