因为RoleProvider接口似乎只将角色视为简单的字符串,所以我想知道是否有任何非hacky方法为每个用户应用角色的可选值。
我们当前的登录管理系统将角色实现为键值对,其中值部分是可选的,通常用于阐明或限制角色授予的权限。
例如,角色'编辑'可能包含用户'barry',但对于'barry',它将具有可选值'raptors',系统将其解释为意味着Barry只能编辑在'猛禽'类别。
我在其他地方看到过一个简单创建额外分隔角色的建议,比如'editor.raptors'或者其他一些角色。这并不是理想的,因为它会大大增加角色的数量,而且我可以说它取代我们当前的实现(这也是非常不理想,但具有定制的优势)将是一个非常难的销售。使用我们的用户数据库)。
我已经知道上面提到的连接方法将涉及很多繁琐的字符串拆分和部分匹配。
有更好的方法吗?
编辑:我最初的目标是使用更多内置的ASP.NET功能。例如,通过Web.config中的<authorization/>
元素控制访问。据我所知,这样做需要自己实现角色。我们当前系统的auths概念似乎与那个限制非常相似。
回答mnemosyn的问题
答案 0 :(得分:1)
这听起来像是一个建筑问题。
首先,您需要确切地确定您需要的内容。在第二步中,将其映射到具体实现。要在那个方面取得进展:除了最简单的情况之外,我不会使用内置提供程序。此外,这个问题很快变得非常复杂,所以我尽量保持这个问题。
要详细说明您的需求,请尝试确定:
有一些提示:不要去白名单,总是使用黑名单。控制白名单是一种痛苦,尤其是当许多规则汇集在一起时。例如,在drupal中,我认为这是一个主要的缺陷(这就是为什么他们重建它以使用版本7中的黑名单)。允许用户做他们不应该做的事情通常是一个比其他方式更大的问题。
Windows文件访问概念非常复杂,因为它既有黑名单又有白名单,还可以继承 - 所以尽量让你的解决方案比这更简单。
串联连接对我来说听起来很危险,无论如何我都会寻求更清洁的解决方案。这种类型的元逻辑令人头疼。