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

ash*_*ram 4 java sql database

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

以下是我们创建的设计.任何人都可以让我知道它是否是实现这种功能的正确方法?

用户表将有两列,如下所示

1)Id 2)姓名

角色表将具有角色ID和角色名称.

用户可以拥有多个角色,因此我们将拥有一个用户角色参考表,该表将具有用户ID和角色ID.

角色可以是管理员,用户,主持人等.

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

每个角色都可以访问某些模块,例如Admin可以访问所有模块.

用户可以访问少量模块,如仅限订购等.

所以为此,我们有一个单独的静态模块表,它将具有模块ID和名称.

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

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

现在,访问此模块也基于权限.

像用户只有国家和国家的读权限,即他只能查看详细信息.

管理员将拥有州和国家/地区的写权限,以便他可以添加,编辑和删除它们.

那么,我如何在java中实现/设计这整个功能呢?

Ben*_*Ben 7

表:

  • 用户(userID PK,名称等...)
  • 角色(roleID PK,名称UQ等......)
  • UserRole(userID,roleID,PK(userID,roleID)dategranted等...)
  • 模块(moduleID PK,名称UQ等......)
  • RoleModuleAccess(roleID,moduleID,PK(roleID,moduleID),accessFlags)

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

select accessFlags
from RoleModuleAccess rma 
    inner join UserRole ur on ur.roleID = rma.roleID
where rma.moduleID = @moduleID and ur.userID = @userID
Run Code Online (Sandbox Code Playgroud)