2012-02-21 73 views
3

是否有任何预先存在的解决方案可扩展内置的SQL成员资格提供程序& .NET中的Sql角色提供程序具有组成员资格。分组角色并将用户分配到组(ASP.NET角色提供程序)

现在的角色关系看起来像

Users ====> UserRoles <=====Roles 

我想延长那看起来像

Users ====> UserGroups <==== Groups ====> GroupRoles <==== Roles. 

比方说,你必须在它30个或40不同角色的应用程序。每当新员工加入公司时,您必须记住部门通常会获得哪些角色&,然后确保在设置其网站帐户时勾选这8个复选框。

如果您有组织概念,可以为每个部门设置一个“组”,作为部门员工通常获得的角色的逻辑分组。然后,您可以将新员工添加到单个组。

是否有任何现成可用的实现已经可以节省我写我自己的?

+0

我假设你想要的模型基本上就像[我的这里](http://stackoverflow.com/questions/5518746/how-to-join-with-linq-to-typed-dataset),不是吗?我的'角色'只是一个用户组,这个权限由'AccessRule'控制。 – 2012-02-21 12:10:25

+0

确实如此。你有一点点不同我想在用户和角色之间添加一个“组”,你已经创建了角色==组,并且增加了AccessRules,但是这个概念看起来基本相同。 我想以另一种方式来做这件事的唯一原因是能够仍然利用像IsInRole()等内置的提供者方法。 – 2012-02-21 12:27:27

+0

我的方法的优点是你不需要实现一个自定义的'角色提供者“,因为它使它看起来不受影响。 ASP.NET不需要知道我在另一端增强了它。我也实现了一个模板函数,通过使用另一个角色作为模板来创建新的角色。这是另一个“角色”(或你的默认角色)的“AccessRules”列表。我不需要使用'IsInRole'来检查授权。我已经实现了自己的'hasAccess'方法来检查用户是否属于具有给定'AccessRule'的角色(f.e。DeleteXY)。 – 2012-02-21 12:41:47

回答

3

我假设你想要的模型基本上就像mine here,不是吗?我的角色只是一个用户组,其授权受AccessRule控制。

enter image description here

我的做法有,你并不需要实现自定义RoleProvider可言,因为它保持它显然触及了优势。 ASP.NET不需要知道我在另一端增强了它。我也实现了一个模板函数,通过使用另一个角色作为模板来创建新的角色。这是其他Role(或您的默认角色)的AccessRules的列表。我不需要使用IsInRole来检查授权。我实现了我自己的hasAccess方法,用于检查用户是否属于具有给定AccessRule(f.e. DeleteXY)的角色。