在我的自定義身份驗證提供程序中,我能夠通過我的Service API獲取域對象,但是當我從一個域對象抓取到另一個域對象以獲取確定的值以執行其他檢查時,Spring笙歌Hibernate的Session不存在: -使用事務包裝Spring Security自定義身份驗證提供程序
domain.getAnotherDomain().getProperty(); // epic FAIL
我有以下AOP的事務來包裝與交易所有我的項目的API,而且我敢肯定我的自定義身份驗證提供者分爲以下模式: -
<tx:advice id="txAdvice">
<tx:attributes>
<tx:method name="*" propagation="REQUIRED" />
</tx:attributes>
</tx:advice>
<aop:config>
<aop:advisor pointcut="execution(* my.project..*.*(..))" advice-ref="txAdvice" />
</aop:config>
我也有配置OpenSessionInView過濾器,但我不認爲適用於春季安全反正。
我想我可以創建一個特定的服務API來執行所有必需的檢查,但我很好奇爲什麼我無法用適當的事務包裝我的自定義身份驗證提供程序。
任何解釋?謝謝。
異常消息是'無法懶惰地初始化一個角色集合:ss.domain,沒有會話或會話被關閉。除非絕對必要,否則我寧願不執行預先提取...也就是說,如果我得到事務來包裝自定義身份驗證提供程序類。 – limc 2011-02-04 17:03:18