我想知道如何在启动时将管理员用户添加到Grails应用程序。
场景:我开发了Grails应用程序并具有用户权限(在Grails中实现)。现在,一旦我在服务器上部署应用程序,它应该做的第一件事就是创建管理员用户。我的问题是如何做到这一点?我现在不需要精心设计的“安装”。
我的想法:我想把检查和管理员创建代码放在bootstrap中,这是一个示例代码:
def admin = User.findByLogin("admin")
if (!admin) {
admin = new User(login:"admin", name:"Administrator", password:"password")
admin.save()
}
然而,每当我在eclipse中运行应用程序时,它都无法执行任何操作。我的意思是没有错误,根本没有动静。应用程序运行正常,但似乎完全跳过bootstrap。
问题是如何在首次运行或启动时通过Grails应用添加管理员用户? 如果我需要使用引导程序,我的上述代码有什么问题?
答案 0 :(得分:1)
save()
调用很可能无法验证。将admin.save()
替换为
if (!admin.save()) {
println "Failed to save admin due to errors: $admin.errors"
}
或类似的东西,以了解正在发生的事情。另外在此代码之前添加另一个println以确保代码运行 - 您可能在代码中出现更严重的错误。
一般情况下,当应该工作的代码没有时,最好运行grails clean
。它强制完全重新编译,并且经常会使奇怪的行为消失。
答案 1 :(得分:1)
试试这段代码:
def admin = User.findByLogin("admin")
if (!admin) {
admin = new User(login:"admin", name:"Administrator", password:"password")
admin.save(failOnError:true)
}
如果由于验证错误导致保存失败,则标志 failOnError 强制grails抛出异常,如果没有此标志,grails将无法以静默方式保存实例。