13.3. Hibernate 的声明式安全机制

优质
小牛编辑
125浏览
2023-12-01

通常,Hibernate 应用程序的声明式安全机制由会话外观层(session facade)所管理。现在,Hibernate3允许某些特定的行为由 JACC 进行许可管理,由 JAAS 进行授权管理。本功能是一个建立在事件框架之上的可选的功能。

首先,你必须要配置适当的事件监听器(event listener),来激活使用 JAAS 管理授权的功能。


<listener type="pre-delete" class="org.hibernate.secure.JACCPreDeleteEventListener"/>
<listener type="pre-update" class="org.hibernate.secure.JACCPreUpdateEventListener"/>
<listener type="pre-insert" class="org.hibernate.secure.JACCPreInsertEventListener"/>
<listener type="pre-load" class="org.hibernate.secure.JACCPreLoadEventListener"/>

注意,<listener type="..." class="..."/> 只是 <event type="..."><listener class="..."/></event> 的简写,对每一个事件类型都必须严格的有一个监听器与之对应。

接下来,仍然在 hibernate.cfg.xml 文件中,绑定角色的权限:


<grant role="admin" entity-name="User" actions="insert,update,read"/>
<grant role="su" entity-name="User" actions="*"/>

这些角色的名字就是你的 JACC provider 所定义的角色的名字。