java - 管理用户、他们的角色、模块和权限的更合适的方法是什么?

标签 java sql spring database

<分区>

我们有一个 Web 应用程序,我们需要在其中创建功能来管理用户、角色、模块及其权限。

下面是我们创建的设计。谁能告诉我这是否是实现此类功能的正确方法?

用户表将有如下两列

1) 身份证 2) 姓名

角色表将包含角色 ID 和角色名称。

一个用户可以有多个角色,因此,我们将有一个用户角色引用表,其中包含用户 ID 和角色 ID。

角色可以是管理员、用户、版主等

可以有很多模块,如国家、州、订单、部门等。

每个角色都可以访问某些模块,例如管理员可以访问所有模块。

用户将可以访问一些模块,例如仅订单等。

为此,我们有一个单独的静态模块表,其中包含模块 ID 和名称。

我们将有另一个角色模块引用表,其中包含哪个角色可以访问哪些模块的信息。

同样,每个用户都有一些角色,因此可以访问某些模块。

现在访问这个模块也是基于权限的。

喜欢的用户将只有对国家和国家的阅读权限,即他只能查看详细信息。

管理员将拥有州和国家的写入权限,以便他可以添加、编辑和删除它们。

那么,我该如何着手在 Java 中实现/设计这整个功能?

最佳答案

表格:

  • 用户(用户 ID PK、姓名等...)
  • 角色(roleID PK、姓名 UQ 等...)
  • UserRole(用户 ID、角色 ID、PK(用户 ID、角色 ID)已授予日期等...)
  • 模块(模块 ID PK、名称 UQ 等...)
  • RoleModuleAccess(角色 ID、模块 ID、PK(角色 ID、模块 ID)、访问标志)

要找出用户 @userID 在模块 @moduleID 中的访问权限:

select accessFlags
from RoleModuleAccess rma 
    inner join UserRole ur on ur.roleID = rma.roleID
where rma.moduleID = @moduleID and ur.userID = @userID

关于java - 管理用户、他们的角色、模块和权限的更合适的方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5361397/

相关文章:

SQL:仅根据内容显示值

java - 如何列出所有已加载的 Spring bean 定义文件

java - 将 key 保存到 derby 数据库

java - 使用 Java 为 Android 应用程序解析 GeoJSON

java - 清理未修剪的字符串空白

java - 用户登录和 session 劫持后的 Spring Security cookie

java - Spring Jersey POST 序列化 bean

java - SAP JBOSS 的 jar 问题

sql - postgresql 表中值的分布

mysql - 在同一列上使用多个 WHERE 范围条件进行选择