12.3. Hibernate的声明式安全机制

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

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

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

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

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

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

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