0

我想知道如何在启动时将管理员用户添加到 Grails 应用程序。

场景:我开发了 Grails 应用程序并拥有适当的用户权限(在 Grails 中实现)。现在,一旦我在服务器上部署应用程序,它应该做的第一件事就是创建管理员用户。我的问题是怎么做?我现在不需要精心的“安装”。

我的想法:我想把检查和管理创建代码放在引导程序中,这是一个示例代码:

def admin = User.findByLogin("admin")
if (!admin) {
   admin = new User(login:"admin", name:"Administrator", password:"password")
   admin.save()
}

但是,每次我在 Eclipse 中运行应用程序时,它都无法执行任何操作。我的意思是没有错误,根本没有动作。应用程序运行良好,但似乎完全跳过了引导程序。

问题是如何在首次运行或启动时通过 Grails 应用程序添加管理员用户?如果我需要使用引导程序,我上面的代码有什么问题?

4

2 回答 2

1

最有可能的情况是save()调用无法验证。替换admin.save()

if (!admin.save()) {
    println "Failed to save admin due to errors: $admin.errors"
}

或类似的东西来了解正在发生的事情。还要在此代码之前添加另一个 println 以确保代码甚至正在运行 - 您可能在代码中有更严重的错误。

一般来说,最好在grails clean应该工作的代码不工作时运行。它强制进行完全重新编译,并且经常使奇怪的行为消失。

于 2013-01-28T23:17:40.423 回答
1

试试这个代码:

def admin = User.findByLogin("admin")
if (!admin) {
   admin = new User(login:"admin", name:"Administrator", password:"password")
   admin.save(failOnError:true)
}

如果由于验证错误导致保存不成功,标志failOnError 会强制 grails 抛出异常,如果没有此标志,grails 将不会静默保存实例。

于 2013-01-29T08:52:38.000 回答