刚刚开始在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 = {}
}
任何可以提供帮助的人都是传奇!
答案 0 :(得分:4)
您不在Person实例上调用save()
。一旦修复了,您将无法登录,因为您正在关注旧的教程或博客文章,并且您明确编码了密码。但是生成的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
}
答案 1 :(得分:0)
首先,我打赌你需要在新的save()
上致电Person
。之后,请确保您的Person
对象正在验证。