我有一个与 SpringSecurityCore 插件一起设置的基本 Grails 2 应用程序。这似乎工作正常。但是,当我尝试通过扩展类向我的 User.groovy 文件添加其他属性时,我似乎无法在我的控制器中引用这些属性。
为了更好地说明这个问题,请看一下我扩展 User.groovy 的基本类:
用户信息.groovy:
class UserInfo extends User {
String firstname
String lastname
}
在我想引用当前用户名的页面上,我只是在编写一个方法,如下所示:
def index() {
def uname = springSecurityService.currentUser.username
def firstname = springSecurityService.currentUser.firstname
render uname
}
这可以很好地呈现用户名,我相信这是因为在基本 User.groovy 文件中引用了用户名:
class User {
transient springSecurityService
String username
String password
但是,当我尝试将名字定义为 springSecurityService.currentUser.firstname 的一部分时,上述“def index()”方法会失败。
如果我将额外的属性注入到基本 User.groovy 类中,那么我可以通过 springSecurityService.currentUser.[property] 引用它们
为了说明这一点:
class User {
transient springSecurityService
String username
String password
String firstname
...
然后我可以在上述索引方法中引用我的用户的名字属性。
是否可以引用我的 User 的扩展属性而不在基 User 类中注入值?我的目标是尽量保持 User 类尽可能干净,同时仍然能够调用 UserInfo.groovy 文件中引用的值。
提前感谢您的宝贵时间。