在Hibernate中如何在数据库级别限制用户访问 应用程序
我需要实现一个web应用程序,将由不同的用户使用。每个用户对不同的表具有不同的权限,例如在Hibernate中如何在数据库级别限制用户访问 应用程序,hibernate,jboss,db2,data-access,Hibernate,Jboss,Db2,Data Access,我需要实现一个web应用程序,将由不同的用户使用。每个用户对不同的表具有不同的权限,例如 用户A可以从表中查看字段“姓名”和“地址”Student 用户B可以从表Student 用户C可以查看和修改上述所有字段 我将在UI级别上设置一些限制特定访问的功能,例如,为没有修改条目权限的用户隐藏“编辑”按钮。但是,我认为我应该在较低的级别(可能在数据库级别?)上使用一些东西,以确保数据安全 问题 我的应用程序使用Hibernate、JBoss、DB2和Struts。我想我应该使用某种JBoss L
Student
Student
我将在UI级别上设置一些限制特定访问的功能,例如,为没有修改条目权限的用户隐藏“编辑”按钮。但是,我认为我应该在较低的级别(可能在数据库级别?)上使用一些东西,以确保数据安全
问题 我的应用程序使用Hibernate、JBoss、DB2和Struts。我想我应该使用某种JBoss LoginModule,它使用user/password/roles(但我可能错了(?)来验证数据库中的用户。我做了一些研究,并提出了以下选择,但似乎没有一个适合我的情况。我认为这是多用户web应用中非常常见的数据访问问题。谁能给我指一下正确的方向吗?提前谢谢你
hibernate.cfg.xml
中的“grant”标记。这可以在所有hibernate实体上设置“插入”“更新”“读取”权限。但是,如果我需要更精细的控件怎么办?我需要对某些字段而不是整个对象设置权限在这里进行数据访问控制的好方法是什么
您还可以使用[基于地图的动态模型](http://www.hibernate.org/hib_docs/reference/en/html/persistent-classes-dynamicmodels.html)以及单独的[命名查询](http://www.hibernate.org/hib_docs/reference/en/html/querysql-namedqueries.html),而不是有部分填充的豆子。然后,您的视图代码只需检查映射是否包含“address”的条目,如果找到,则显示字段?另一个选项可能是使用自定义类型。例如,与其将字符映射到字符串,不如将其映射到自定义类型,如SecureString。在映射中为其指定一个具有某种唯一标识符的参数,例如table.column。然后,在自定义类型的nullSafeGet方法中,可以调用安全服务来查看是填充值还是将其设置为null。您可能还必须使用ThreadLocal来存储一些东西来标识用户或角色。您只需要创建一些自定义类型来包装string、double、date、integer等。我做了一些类似的事情,允许将日期转换为用户的时区