我在使用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