首页 文章

如何设计用户,角色和权限架构?

提问于
浏览
1

这在Web应用程序开发中非常常见 . 我做了很多次 .

但我陷入了当前为此设计架构的项目中 .

问题是我的应用程序将在开始时有三种类型的用户 . SuperAdmin,Admin和普通用户 .

我计划将这些用户类型作为ROLE_SUPERADMIN,ROLE_ADMIN和ROLE_USER等角色 .

系统可以有很多角色 . 事实上,SuperAdmin和Admins创建角色并将这些角色分配给用户 .

问题是,

超级管理员将拥有权限p1,p2和p3 . 超级管理员可以创建其他超级管理员 . 超级管理员可以创建管理员 . 超级管理员不会在系统中添加用户 .

管理员可以拥有权限p5,p6和p7 . 管理员无法创建其他管理员 . 管理员可以创建其他用户 . 管理员还可以创建像报告查看者这样的角色 .

拥有权限p1,p2和p3的超级管理员应该能够创建具有权限p5,p6和p7的管理员 . 我不太了解 .

逻辑上,当Super admmins自己没有权限p5,p6和p7时,他们如何创建具有这些权限的管理员?

请用正确的设计帮助我 .

以下是我到目前为止的设计 .

用户
UserID RoleID

角色
RoleID RoleName

允许
PermissionID PermissionName

ROLE_PERMISSION RoleID PermissionID

谢谢 .

3 回答

  • 2

    这是一个加载的问题,设置成员,角色等是不小的壮举 . 我建议你看看已经写好的库,看看它们是否适合你的需求 . 您应该开始使用Google搜索的内容,简称为“访问控制列表”(acl) .

  • 2

    一旦设计了这样的数据库;

    我安装了一些论坛,门户和CMS脚本,并分析了他们如何处理这种情况,然后提取数据库模式并将其用作参考 .

    可能这可以帮助

  • 2

    您应该查看授权框架和标准,例如XACML - XACML允许您基于多个属性定义授权,这样您就不会最终陷入角色爆炸 . 因此,您可以创建规则,而不是创建角色manager_in_tx_with_gold_status,例如:

    具有role = manager和location = TX的用户可以执行操作=查看资源....

    还有几种供应商解决方案和开源解决方案 . 查看Wikipedia页面和标准主页以获取更多信息:

    我也有一个关于XACML的Youtube Channels :

相关问题