我在使用Grails編寫一個Web應用程序中的Acegi/Spring Security的插件,和我有麻煩得到它看到的變化我做給用戶實例。我只一直在使用Groovy/Grails的約三個星期,所以請原諒我,如果這個問題是微不足道的,因爲我一直在研讀了郵件列表和教程試圖找到答案。的Acegi/Spring Security的Grails的插件沒有看到變化的用戶實例
我一直在增加新的屬性添加到用戶領域類,每當我需要一個用戶包含更多的信息,如電子郵件確認令牌或真實姓名,因爲我無法找到任何與此相反的建議。一切似乎都適合創建新用戶,但是當我編輯用戶時,更改顯示在用戶列表中,但Acegi標記庫和關聯的函數似乎看不到更改。
這裏是UserController.update()的相關片段:此代碼運行
def person = User.get(params.id)
//...snip error checking...
//Update user attributes
person.username = params.email
person.email = params.email
person.userRealName = params.userRealName
//Attempt to save changes
if (person.save()) {
//If successful, redirect back to profile viewing page
redirect action: show, id: person.id
return
}
else {
//Otherwise, show errors and edit again
render view: 'edit', model: buildPersonModel(person)
return
}
後,我可以看到的變化,如果我總是ID獲取用戶數據,但如果我用的是Acegi的標籤或功能。例如,這不起作用:
loggedInUserInfo(field:'realName')
但這:
User.get(loggedInUserInfo(field:'id').toLong()).realName
新的信息有時顯示了我註銷後再次,但通常沒有,經常即使在三次或更多次重新記錄之後也沒有顯示出來。另外,我嘗試在person.save()中添加「flush:true」,但沒有任何效果。
(外設的問題:這是對我不好與用戶類像這樣被擺弄如果沒有,什麼是將信息添加到它的最佳方式?)更多調查後
更新: 它看起來像是在普通頁面中使用了loggedInUserInfo(),它工作正常,但如果我在佈局中使用它,它會展現我描述的行爲。難道會有一些奇怪的緩存嗎?
不,我沒有,也不知道我需要。謝謝! 我不能在星期一進行測試,所以我要等上幾天才能說出是否是解決方案。 – 2009-05-30 19:26:34
3個月前我都不知道。但在http://www.infoq.com/articles/grails-acegi-integration上,我在評論中找到了答案:「我如何向AuthUser/User添加新字段?爲什麼有兩種類型的用戶?」 這解決了我的問題。 – 2009-05-31 05:58:32
對不起,但那不能解決它。問題依然存在。儘管如此,感謝您的鏈接。 我懷疑它與會話中緩存的數據有關,但我不確定。 – 2009-06-02 19:42:36