这是用户和用户角色的基本数据库结构。
我的客户希望能够查看一个角色并勾选一些框,“这个角色可以做 x、y 和 z”。X、Y 和 Z 是应用程序中的一些操作。
这不是一个新想法,我相信这种情况有一个经过验证的模式。与 Wordpress 所做的类似,它选择角色 Foo 可以执行的功能,并且用户属于该角色。
关于 MVC3 特定解决方案的任何建议?
这是用户和用户角色的基本数据库结构。
我的客户希望能够查看一个角色并勾选一些框,“这个角色可以做 x、y 和 z”。X、Y 和 Z 是应用程序中的一些操作。
这不是一个新想法,我相信这种情况有一个经过验证的模式。与 Wordpress 所做的类似,它选择角色 Foo 可以执行的功能,并且用户属于该角色。
关于 MVC3 特定解决方案的任何建议?
内置属性[Authorize]
允许您限制某些操作,以便只能由某些角色执行。
对于您要尝试的内容,我建议将“功能 X、Y 和 Z”视为角色,并将您当前拥有的角色视为“用户组”或其他角色。因此,您的客户将能够为某些“角色”分配不同的“用户组”访问权限。
这样你就可以利用内置的会员/角色/授权的东西。您需要做的就是实现您自己的 MembershipProvider 和 RoleProvider。
您的角色提供者实现string[] GetRolesForUser(string username)
需要进行数据库查找以查看他们所在的“用户组”,以及他们有权访问的“角色”。
如果您这样做,您可以轻松地通过属性限制对不同功能的访问[Authorize]
,并使用标准成员资格来处理登录过程。
如果您的客户坚持称它们为“角色”和“功能”而不是“用户组”和“角色” - 您无需告诉他这不是您实现它的方式:)
编辑
或者,您可以创建自己的 Authorization 属性,仅从 派生AuthorizeAttribute
,如果用户处于允许的角色中,则覆盖AuthorizeCore( HttpContextBase httpContext)
return true 或 false do do function 'X'