首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >grails spring-security创建用户

grails spring-security创建用户
EN

Stack Overflow用户
提问于 2012-09-24 16:56:28
回答 1查看 507关注 0票数 0

我在从我的一个控制器创建新用户时遇到一些问题。我正在尝试向我的MongoDB用户集合添加一个新用户,如下所示。权限定义为域中的一组角色。

代码语言:javascript
运行
复制
Role role = new Role(authority:"ROLE_USER")
User user = new User(username:params.username,email:params.email,password:params.password,enabled:params.enabled,
            accountExpired:params.accountExpired,accountLocked:params.accountLocked,passwordExpired:params.passwordExpired,
            authorities:[role])

if (user.validate()) {
        user.save(flush:true)
      } else {
        user.errors.allErrors.each { println it }
      }

完全相同的代码能够从bootstrap成功地创建用户,但是当我试图从一个简单的控制器执行相同的操作时,我得到了这个错误:

代码语言:javascript
运行
复制
2012-09-24 10:43:27,450 [http-8080-3] ERROR binding.GrailsDataBinder  - Unable to auto-create type interface java.util.Set, class java.lang.InstantiationException thrown in constructor

a:662)

EN

回答 1

Stack Overflow用户

发布于 2012-09-24 18:04:56

看起来问题出在数据绑定上。您必须先创建具有权限的用户,然后使用UserRole域添加角色。类似于:

代码语言:javascript
运行
复制
Role role = Role.findByAuthority("ROLE_USER")
User user = new User(username:params.username,email:params.email,password:params.password,enabled:params.enabled,     accountExpired:params.accountExpired,accountLocked:params.accountLocked,passwordExpired:params.passwordExpired)
new UserRole(user: user, role: role).save(flush: flush, insert: true)
user.save(flush:true)

有关如何创建具有spring安全性的用户的更多信息,您可能需要查看Spring Security UI

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12561728

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档