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 创建第二个权限。

尝试这个:

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 回答