我正在创建一个企业级应用程序,其中有不同类型的用户。正常用户,组织管理,超级管理。每个用户都有不同的角色。
这个架构是如何设计的?应该将角色设计为单独的类。或者使用继承不同类型的用户来创建??
发布于 2011-08-07 12:50:09
通常,角色不是作为类建模的,但它们只是字符串。当用户进行身份验证时,这些字符串中的许多与用户的Security principal相关联。
这些角色可以在代码中进行查询,例如,在web层通过HttpServletRequest#isUserInRole查询,在EJB模块中通过SessionContext.isCallerInRole查询等等。还有一些注释声明了对角色的依赖。
因此,如果您想利用现有的安全性和角色结构,除了定义存在哪些角色并提供一个登录模块来获取身份验证的用户的角色集合之外,没有什么可供您设计的。
对于最后一件事,你可能需要设计一些东西,但不一定。如果将用户存储在目录服务(例如LDAP)中,则只需使用LDAP登录模块即可。大多数应用服务器或servlet容器(如JBoss AS、Glassfish、Tomcat等)默认提供这些服务。如果您的用户位于DB中,那么一个简单的表,其中一个列中的用户具有外键,另一个列中的角色名就可以了。然后,您可以使用一个DB登录模块,它使用一个简单的查询来获取角色。
发布于 2011-08-07 12:47:49
在数据库级别,您有一个用户表、一个角色表和一个用户角色表,该表控制哪些用户拥有哪些角色。
在类级别,您有一个用户类,它有一个角色列表作为属性。
可以向用户类添加方法,例如IsAdmin或IsSuperUser。
https://stackoverflow.com/questions/6972889
复制相似问题