Hibernate 在企业级应用程序中,角色应该如何设计?

Hibernate 在企业级应用程序中,角色应该如何设计?,hibernate,architecture,Hibernate,Architecture,我正在创建一个企业级应用程序,其中有不同类型的用户。普通用户,组织管理员,超级管理员。每个用户都有不同的角色 普通用户:访问核心应用程序的功能 组织管理员:创建用户及其组织 超级用户:批准用户和组织 如何设计这种架构?应将角色设计为单独的类。或者在数据库级别使用要创建的不同类型的用户???您有一个用户表、一个角色表和一个控制哪些用户具有哪些角色的用户角色表 在类级别,您有一个用户类,该类将角色列表作为属性 您可以向用户类添加方法,例如IsAdmin或issupurer。通常,角色不是建模为类,而

我正在创建一个企业级应用程序,其中有不同类型的用户。普通用户,组织管理员,超级管理员。每个用户都有不同的角色

  • 普通用户:访问核心应用程序的功能

  • 组织管理员:创建用户及其组织

  • 超级用户:批准用户和组织


  • 如何设计这种架构?应将角色设计为单独的类。或者在数据库级别使用要创建的不同类型的用户???

    您有一个用户表、一个角色表和一个控制哪些用户具有哪些角色的用户角色表

    在类级别,您有一个用户类,该类将角色列表作为属性


    您可以向用户类添加方法,例如IsAdmin或issupurer。

    通常,角色不是建模为类,而是简单的字符串。当用户进行身份验证时,其中许多字符串与用户的
    安全主体
    相关联

    这些角色可以在代码中查询,例如在web层中通过
    HttpServletRequest#isUserInRole
    ,在EJB模块中通过
    SessionContext.iscalerinrole
    等。还有一些注释声明了对角色的依赖性

    因此,如果您希望利用现有的安全性和角色结构,那么除了定义存在哪些角色并提供一个登录模块来获取已验证用户的角色集合之外,您无需进行任何设计

    对于最后一件事,您可能需要设计一些东西,但不一定。如果将用户存储在目录服务(例如LDAP)中,则只需使用LDAP登录模块即可。默认情况下,大多数应用服务器或servlet容器(如JBossAS、Glassfish、Tomcat等)都提供了这些。如果您的用户在数据库中,则可以使用一个简单的表,该表在一列中包含用户的外键,在另一列中包含角色名称。然后,您可以使用DB登录模块,该模块使用简单的查询来获取角色