gpt4 book ai didi

grails - GRAILS + Spring Security插件-添加用户时密码未加密

转载 作者:行者123 更新时间:2023-12-02 14:22:21 25 4
gpt4 key购买 nike

全新安装Grails 3.2.9 + Spring Security插件3.1.0。

s2-quickstart com.raf.app User Role创建的默认User / Role / UserRole域。

BootStrap初始化代码:

...
def init = { servletContext ->
def adminRole = Role.findOrSaveWhere(authority: 'ROLE_ADMIN')
def user = User.findOrSaveWhere(username: 'raf',
password: 'password')
if (!user.authorities.contains(adminRole)){
UserRole.create(user, adminRole)
}
...

我在一个教程中看到,该用户的密码应该显示在db中(使用dbconsole进行检查),但在我的情况下却不是(如此处的“password”)。

因此,我进入了User域并进行了以下可怕的更改:
def beforeUpdate() {
encodePassword()
}

protected void encodePassword() {
password = springSecurityService?.passwordEncoder ? springSecurityService.encodePassword(password) : springSecurityService.encodePassword(password)
}

另一方面,这会引发NullPointer异常。为什么?
 Cannot invoke method encodePassword() on null object

那么,如何加密我的密码,就像我喜欢他们一样?

最佳答案

因此,解释发生了什么,希望它更有意义

您只是告诉代码如果找不到编码,则重复加密功能。

上面的代码默认是在这里

 password = springSecurityService?.passwordEncoder ? springSecurityService.encodePassword(password) : password

这说:
if (springSecurityService?.passwordEncoder) {
springSecurityService.encodePassword(password)
} else {
password
}

所以你看到你已经告诉它做它不能做的事情

我在grails 3.2.8上并使用:
compile 'org.grails.plugins:spring-security-core:3.1.2'

关于grails - GRAILS + Spring Security插件-添加用户时密码未加密,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44421618/

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