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

时间:2011-08-07 12:42:20

标签: hibernate architecture

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

  1. 普通用户:核心应用程序的访问功能。

  2. 组织管理员:创建用户和组织。

  3. 超级用户:批准用户和组织

  4. 如何设计这种架构?是否应将角色设计为单独的类。或者使用继承不同类型的用户进行创建??

2 个答案:

答案 0 :(得分:1)

在数据库级别,您有一个用户表,一个角色表和一个用户角色表,用于控制哪些用户拥有哪些角色。

在类级别,您有一个用户类,其中包含角色列表作为属性。

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

答案 1 :(得分:1)

通常,角色不是作为类建模的,但它们只是字符串。当用户进行身份验证时,许多这些字符串都与用户的Security principal相关联。

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

如果您希望利用现有的安全性和角色结构,除了定义哪些角色以及提供可以为已经过身份验证的用户获取角色集合的登录模块之外,您无需进行任何设计。 / p>

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