2

最近Groovyでプログラミングを始めたばかりで、すでに立ち往生しています。ブートストラップでログインできるユーザーを作成しようとしています。多数のチュートリアルを見てきましたが、コードをコピーして貼り付けたにもかかわらず、多数のエラーが発生しました。実行しているように見えるコードに取り掛かりましたが、ユーザーは単にそこにいません。

私は何を間違っていますか?

import grails.timesecurity.*
import timetracker2.*

class BootStrap {
    def springSecurityService

    def init = { servletContext ->

        def examples = [
            'rob' : [username: 'rob', password: 'password']
        ]

        def userRole = Authority.findByAuthority("ROLE_USER") ?: new Authority(authority: "ROLE_USER").save()
        def adminRole = Authority.findByAuthority("ROLE_ADMIN") ?: new Authority(authority: "ROLE_ADMIN").save()

        if(!Person.count())
        {
            userRole = new Authority(authority: 'ROLE_USER').save()

            //String password = springSecurityService.encodePassword('password')

            def user = new Person(
                username: "Rob",
                password: springSecurityService.encodePassword("Password"),
                enabled: true
                )
            PersonAuthority.create user, userRole
            //def user = new Person['Rob', password, enabled: true].save()
        }       
    }

    def destroy = {}
}

助けることができる人は誰でも伝説です!

4

2 に答える 2

4

save()Person インスタンスを呼び出しません。ただし、これが修正されると、古いチュートリアルまたはブログ投稿に従っており、パスワードを明示的にエンコードしているため、ログインできなくなります。しかし、生成された Person クラスはすでにこれを行っているため、二重にエンコードされます。さらに混乱させるために、ROLE_USER で 2 番目の権限を作成しています。

これを試して:

def userRole = Authority.findByAuthority("ROLE_USER") ?: new Authority(authority: "ROLE_USER").save()
def adminRole = Authority.findByAuthority("ROLE_ADMIN") ?: new Authority(authority: "ROLE_ADMIN").save()

if (!Person.count()) {

   def user = new Person(
      username: "Rob",
      password: "Password",
      enabled: true).save()

   PersonAuthority.create user, userRole
}
于 2012-11-26T22:12:59.743 に答える
0

まず、save()新しいPerson. その後、Personオブジェクトが検証されていることを確認してください。

于 2012-11-26T22:10:40.073 に答える