什么是最好的数据库模式,以跟踪基于角色的访问控制一个网络应用程序?

我使用的轨道,但来说插件链接,通过Google看起来维护(只有300承诺SVN;最新的几乎是一年前)。

这个概念是简单的足以实现从头开始,但复杂和重要,这是值得的权利。

因此,如何做人的建筑师和实现他们来说的模型?

有帮助吗?

解决方案

我相当基本的知识在这一领域的基本行为者的来说是:

  • 资源。
  • 权限。
  • 用户。
  • 角色(即组)。

资源 <-需要->(一个或多) 权限.

角色 <-集合->(一个或多) 权限.

用户 <-可以->(一个或多) 角色.

表这样的模式将是:

  • 权限
  • 作用
  • 用户
  • role_permission
  • user_role

现在你可能需要包括的资源,在这里以及如果你想要应用程序的用户能够配置其权限的资源需要。但是我从不需要。希望这有所帮助。

其他提示

这是一个简单的图表来说明 Amr Mostafa的出色答案

我碰巧在这里工作的RBAC子系统正在工作......真是巧合。

我的模型基于系统中需要权限的不同实体的构建块,无论是查看/更新的属性还是要执行的操作。当然,系统中也有不同的角色(可以提供给用户),将整个事物放在一起的粘合剂是访问规则,连接特定角色,特定权限需求实体和授予的权限。访问规则可能如下所示:

rule 14: guest role + page name + read permission
rule 46: approver role + add column + execute permission

等等。我会把ERD作为练习留给读者;-)如果你有问题,请发表评论。

Yuval = 8 - )

您可以使用 Restful ACL Rails插件

我想回答你的问题去为深为你想要走。如果你想把角色组成,然后关联的团体用户不够。最终你会需要给予特定权限的用户在一个特定的对象(一个论坛、视频等)。

我更靠近尤瓦的答案,我们所需要的是相关联的项目范围内对象+行动+用户。提供这一点;一个基本目(实体)非常有意义。任何对象的继承实体可以很容易地与用户相关联+行动这种方式。

你还想让事情简单;我的建议;

  • 任何物体由于来说的限制应该源自一个基本的实体。
  • 应该有一个列表中的角色,这是一对一相关的一个实体。
  • 应该有一个清单的用户之间的关系和角色。

拿东西进了一步,我还将建议如下(对于一个自动化来说)

  • 我用基于服务的访问给我的对象。这就是;我创建respositories的对象(其数据库的访问对我来说)和我访问的仓库,通过服务职能。
  • 我用一个定义属性在开始的每一服务的功能。这一定义需要作用,以访问这一职能。
  • 我用的是用户的参数来访问我所有的服务职能,并且每个服务功能不作用,检查在执行本身。反射有助于我了解其功能我打电话,什么样的作用(通过自定属性)
  • 我还运行一个初始化对我的应用程序的启动,和它检查的所有职能(及其属性的),并认为如果我加入一个新的需要作用。如果有一个角色我只是增加而不会出现在数据库,它创建了它在数据库。

但很可惜,这只是可用的。净,因为我知道Java没有定义属性,因此,尚不可能提供Java。

我想来一些代码的例子,但我太懒做到这一点。仍然如果你有疑问我的方式来说;你可以问问这里和我一定会答复。

角色要求非常适用于Restful Authentication,以提供基于角色的身份验证功能和维护得很好。

对于.net应用程序,您应该查看Visual Guard http://www.visual-guard。 com / 以避免必须从头开始处理权限和角色。

对于.net,您还可以使用配置处理成员资格和角色提供程序以及授权。 http://www.odetocode.com/Articles/427.aspx

尝试 https://github.com/ThoughtWorksStudios/piece ,这是一个规则引擎管理基于用户角色的访问控制:

  1. 定义访问控制规则
  2. 合并规则以构建新规则
  3. 您可以在此处找到完整的Rails应用程序示例: https://github.com/xli/piece-blog

介绍来说-

基于角色的出入控制系统的一种方法是限制访问'一些消息来源或应用程序或某些功能的应用基于角色的用户的组织。

在这里,限制可以通过多的权限,这些都是创建管理员的访问限制,这些权限集体代表的作用,这将分配给用户。

如果我们去稍微更深来说,这基本上包含3个特征。

1)验证它确认用户的身份。它通常是通过用户的帐户和密码,或凭证。

2)授权--它规定了什么样的用户可以做到和不能做一个应用程序。前。'修改为'是允许的,但'创造新秩序'并不容许的。

3)审计的用户操作上的应用。-这跟踪用户的操作应用、以及谁授予其的访问其中的用户?

这是非常基本的顶图片的来说系统。

基础结构的系统来说可以包含下列部件:用户、角色、权限或限制的资源。

  • 权限或限制的权限表示访问以 应用程序的资源。
  • 角色,它包含收集的权限
  • 用户单个或多个角色分配给用户,所以最终用户 含有权限通过手段的作用。

此外,还可以收集有用户谓的组成和作用可以分配给群体,如果你想来支持复杂的情况。所以,这是非常基本的信息来说结构。

我非常喜欢这篇博文: https:// content。 pivotal.io/blog/access-control-permissions-in-rails

编辑:

似乎ryanb的railscasts沿着相同的路线思考并创建了一个名为cancan的宝石 https:// github。 com / ryanb / cancan 使用类似于pivotollabs帖子的基本技术。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top