2

这是用户和用户角色的基本数据库结构。

在此处输入图像描述

我的客户希望能够查看一个角色并勾选一些框,“这个角色可以做 x、y 和 z”。X、Y 和 Z 是应用程序中的一些操作。

这不是一个新想法,我相信这种情况有一个经过验证的模式。与 Wordpress 所做的类似,它选择角色 Foo 可以执行的功能,并且用户属于该角色。

关于 MVC3 特定解决方案的任何建议?

4

1 回答 1

2

内置属性[Authorize]允许您限制某些操作,以便只能由某些角色执行。

对于您要尝试的内容,我建议将“功能 X、Y 和 Z”视为角色,并将您当前拥有的角色视为“用户组”或其他角色。因此,您的客户将能够为某些“角色”分配不同的“用户组”访问权限。

这样你就可以利用内置的会员/角色/授权的东西。您需要做的就是实现您自己的 MembershipProvider 和 RoleProvider。

您的角色提供者实现string[] GetRolesForUser(string username)需要进行数据库查找以查看他们所在的“用户组”,以及他们有权访问的“角色”。

如果您这样做,您可以轻松地通过属性限制对不同功能的访问[Authorize],并使用标准成员资格来处理登录过程。

如果您的客户坚持称它们为“角色”和“功能”而不是“用户组”和“角色” - 您无需告诉他这不是您实现它的方式:)

编辑

或者,您可以创建自己的 Authorization 属性,仅从 派生AuthorizeAttribute,如果用户处于允许的角色中,则覆盖AuthorizeCore( HttpContextBase httpContext)return true 或 false do do function 'X'

于 2012-01-19T02:39:50.577 回答