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

时间:2011-03-19 10:03:06

标签: java sql database

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

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

用户表将有两列如下

1)Id 2)姓名

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

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

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

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

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

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

因此,我们有一个单独的静态模块表,它将具有模块ID和名称。

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

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

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

Like用户将只拥有国家和国家的读取权限,即他只能查看详细信息。

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

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

1 个答案:

答案 0 :(得分: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