我在Grails应用程序中使用spring security core插件。我设法安装插件并在bootstrap中提供默认用户,该用户工作正常。但是,我想提供在应用程序中创建新用户(注册)的选项。完成此任务的最佳方法是什么?我在UserController中尝试了以下代码:
def save = {
def userRole = SecRole.findByAuthority("ROLE_USER")?: new SecRole(authority:"ROLE_USER").save(failOnError:true)
def adminRole = SecRole.findByAuthority("ROLE_ADMIN") ?: new SecRole(authority:"ROLE_ADMIN").save(failOnError:true)
def newUser = new User(
username: params.username,
password: springSecurityService.encodePassword(params.password),
enabled: true)
SecUserSecRole.create newUser, userRole
}
但它不起作用并抛出java.lang.NullPointerException。 有任何想法吗? 提前谢谢。
答案 0 :(得分:2)
您需要在用户上拨打save()
。
答案 1 :(得分:0)
我尝试加载不存在的角色。我用上面的评论测试了它(保存用户而不是在修复我的bug之后保存,两个版本都有效)。所以SecUserSecRole.create对我来说足够了。