2011-03-24 62 views
1

我有一體式彈簧安全插件與我的Grails應用程序,其中有Hibernate作爲ORM工具...寫操作是不允許在只讀模式(FlushMode.MANUAL):Grails中冬眠

使用彈簧安全插件一切正常用我的應用程序,包括認證,授權...

但最近我得到了在那裏我遇到了一些問題一個案例:

作爲登錄:管理員 角色管理員:ROLE_ADMIN ROLE_ADMIN特權:ROL可以訪問每個網址E_ADMIN

所以當我試圖更新分配給ROLE_ADMIN的權限的管理員用戶,其拋出異常:

2011-03-24 10:20:14,035 [http-8080-2] ERROR errors.GrailsExceptionResolver - Write operations are not allowed in read-only mode (FlushMode.MANUAL): Turn your Session into FlushMode.COMMIT/AUTO or remove 'readOnly' marker from transaction definition. 
org.springframework.dao.InvalidDataAccessApiUsageException: Write operations are not allowed in read-only mode (FlushMode.MANUAL): Turn your Session into FlushMode.COMMIT/AUTO or remove 'readOnly' marker from transaction definition. 
     at ConfigController$_closure45_closure59.doCall(ConfigController:1128) 
     at ConfigController$_closure45.doCall(ConfigController:1123) 
     at ConfigController$_closure45.doCall(ConfigController) 
     at java.lang.Thread.run(Thread.java:619) 

可能是因爲我想更新登錄用戶的權限本身...

裏面的代碼也無論我保存/更新/刪除任何對象使用休眠,我證明flush:false,例如:

user.save flush:false 

所以我想知道是否有一個地方登錄的用戶可以通過其他方式能夠過更新也將反映他的特權/她..

在此先感謝..

回答

1

更改用戶的角色權限後請致電springSecurityService.reauthenticate。在鏈接頁面的'重新驗證'部分也是一個很好的代碼片段,應該回答你的問題。