12.3.  Hibernate的声明式安全机制

通常,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所定义的角色的名字。