Usando hash de senha BCrypt com o plugin Spring Security Grails

Estou tentando usar o hash de senha BCrypt no meu aplicativo Grails que usa o plug-in Spring Security. Ativei o BCrypt adicionando o seguinte aoConfig.groovy

grails.plugins.springsecurity.password.algorithm = 'bcrypt'

E eu defini o seguinte codec para simplificar o uso do BCrypt para codificar senhas:

public class PasswordCodec {

    // it doesn't seem to be possible to dependency-inject codecs, so lookup the bean ourselves
    @Lazy
    private static PasswordEncoder passwordEncoder = Holders.grailsApplication.mainContext.getBean('passwordEncoder')

    static encode = { str ->
        passwordEncoder.encodePassword(str.toString(), null)
    }
}

Quando inicio o aplicativo no modo dev, o banco de dados é inicializado com algumas contas (cada uma com a mesma senha, por exemplo

3.times { i ->
    def username = "user$i"
    def password = "secret".encodeAsPassword()

    new User(username: username, password: password).save()
    // also assign the user a role
}

Se eu procurar no banco de dados, vejo que o valor codificado da senha de cada um desses usuários é diferente! Portanto, não é surpresa que, quando um usuário tenta efetuar login e digita uma senha "secreta", o valor da senha codificada em BCrypt não corresponde ao que é salvo no banco de dados, porque parece que o valor codificado em BCrypt de uma String muda de alguma forma hora extra.

Obviamente, estou fazendo algo errado aqui, mas não faço ideia do que?

questionAnswers(1)

yourAnswerToTheQuestion