应用程序
我需要实现一个可供不同用户使用的网络应用程序。每个用户对不同的表有不同的权限,例如
Student
Student
我将在 UI 级别有一些东西来限制某些访问,例如为无权修改条目的用户隐藏“编辑”按钮。但是,我认为我应该在较低级别(也许在数据库级别?)只是为了确保数据安全。
问题
我正在为我的应用程序使用 Hibernate、JBoss、DB2 和 Struts。我想我应该使用某种 JBoss LoginModule,它使用用户/密码/角色对数据库进行用户身份验证(但我可能错了(?))。我做了一些研究并提出了以下选项,但似乎没有一个适合我的情况。我认为这是多用户 Web 应用程序中非常常见的数据访问问题。有人可以指出我正确的方向吗?先感谢您!
hibernate.cfg.xml
在JACC 事件监听器中使用“grant”标签。这可以对所有休眠实体设置“插入”“更新”“读取”权限。但是,如果我需要更精细的控制怎么办?我需要对某些字段而不是整个对象设置权限。http://www.hibernate.org/hib_docs/v3/reference/en-US/html/objectstate-decl-security.html限制每个 ejb 的 getter/setter 方法的权限。如果我理解正确,这需要为每个用户配置文件手动配置每个 bean,这对我来说似乎不现实。 EJB 方法权限
对 DAO 进行编码以检查用户权限。滚动我自己的实用函数,每次调用特定的 DAO 方法时检查一个巨大的权限表,以确定登录用户是否可以执行该操作。
在 Hibernate 中使用“拦截器”和“事件”。为每个类定义特定的“onLoad”、“onSaveorUpdate”等事件和拦截器。在这种情况下,我可以为各个字段指定权限级别吗?http://www.hibernate.org/hib_docs/v3/reference/en-US/html/objectstate-events.html
我可能是对着错误的树吠叫。以上所有似乎都是劳动密集型的,不是很聪明。以上选项都没有为我提供在运行时更改用户权限的编程方式,当管理员级别的用户想要在此应用程序中给予其他用户更多控制权时,这将很有用。
在这里进行数据访问控制的好方法是什么?