2

指示に従って、Grails 2.1.1 および spring-security-core 1.2.7.3 で暗号化アルゴリズムとして bcrypt を構成しようとしています。Config.groovy で:

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

以前はソルトを使用していて問題なく動作していましたが、この変更のために User.encodePassword() を 1 つの引数バージョンに編集しました。

Bootstrap.groovy で新しいユーザーを作成して保存しようとすると:

testUser = new User(username: 'name@example.com', enabled: true, password: 'password').save(flush: true)

次のエラーが表示されます。

Message: Missing salt rounds
    Line | Method
->>  678 | hashpw                       in org.mindrot.jbcrypt.BCrypt
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
|     44 | encodePassword               in grails.plugins.springsecurity.BCryptPasswordEncoder
|     87 | encodePassword . . . . . . . in grails.plugins.springsecurity.SpringSecurityService
|     42 | encodePassword               in com.madeupname.app.User
|     32 | beforeInsert . . . . . . . . in     ''
|     46 | onApplicationEvent           in org.grails.datastore.mapping.engine.event.AbstractPersistenceEventListener
|     27 | doCall . . . . . . . . . . . in BootStrap$_closure1_closure3_closure4
|    314 | execute                      in grails.util.Environment$EnvironmentBlockEvaluator
|    295 | executeForEnvironment . . .  in grails.util.Environment
|    270 | executeForCurrentEnvironment in     ''
|    334 | innerRun . . . . . . . . . . in java.util.concurrent.FutureTask$Sync
|    166 | run                          in java.util.concurrent.FutureTask
|   1110 | runWorker . . . . . . . . .  in java.util.concurrent.ThreadPoolExecutor
|    603 | run                          in java.util.concurrent.ThreadPoolExecutor$Worker
^    722 | run . . . . . . . . . . . .  in java.lang.Thread

私が見逃したかもしれないものについて何か考えはありますか?

4

1 に答える 1

3

この実装では、4 ~ 31 の値を指定する必要があることがわかりました。ドキュメントを更新しました。

于 2013-06-30T00:19:44.570 に答える