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