【问题标题】:How to protect certain actions from usage according to a custom UserRoles table I created如何根据我创建的自定义 UserRoles 表保护某些操作不被使用
【发布时间】:2012-02-13 17:13:00
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: asp.net-mvc-3 security roles actionmethod


    【解决方案1】:

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

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

    这样您就可以利用内置的成员资格/角色/授权内容。您需要做的就是实现自己的 MembershipProvider 和 RoleProvider。

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

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

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

    编辑

    或者,您可以创建自己的授权属性,只需从 AuthorizeAttribute 派生,如果用户处于允许的角色中,则覆盖 AuthorizeCore( HttpContextBase httpContext) 返回 true 或 false 执行功能“X”

    【讨论】:

      猜你喜欢
      • 2017-09-30
      • 1970-01-01
      • 2013-01-14
      • 2015-11-21
      • 1970-01-01
      • 2013-04-21
      • 1970-01-01
      • 1970-01-01
      • 2019-03-02
      相关资源
      最近更新 更多