gpt4 book ai didi

Grails SpringSecurity 用户对象

转载 作者:行者123 更新时间:2023-12-02 15:12:10 28 4
gpt4 key购买 nike

我有一个与 SpringSecurityCore 插件一起设置的基本 Grails 2 应用程序。这似乎工作正常。但是,当我尝试通过扩展类向我的 User.groovy 文件添加其他属性时,我似乎无法在我的 Controller 中引用这些属性。

为了更好地说明这个问题,请看一下我扩展 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()”方法会失败。

如果我将额外的属性注入(inject)到基本 User.groovy 类中,那么我可以通过 springSecurityService.currentUser.[property] 引用它们

为了说明这一点:
class User {

transient springSecurityService

String username
String password
String firstname
...

然后我可以在上述索引方法中引用我的用户的名字属性。

是否可以引用我的 User 的扩展属性而不在基 User 类中注入(inject)值?我的目标是尽量保持 User 类尽可能干净,同时仍然能够调用 UserInfo.groovy 文件中引用的值。

提前感谢您的宝贵时间。

最佳答案

如果您确实需要将您的用户信息的某些属性放入另一个域并希望这些属性仍然可以从 springSecurityService.currentUser 访问,您必须实现自己的UserDetailsService将 UserInfo 属性与 User 打包在一起。

关于Grails SpringSecurity 用户对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12926727/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com