单个用户的多个角色

时间:2012-09-24 12:28:01

标签: grails spring-security roles

以下代码为单个用户添加了多个角色,还应该注意,这只适用于单个会话,因为我们每次启动应用时都会尝试定义角色和用户,以防止任何崩溃由于这会添加对数据库的检查并创建角色和用户,如果它们不存在。

import trippinspring.*

class BootStrap {

def init = { servletContext ->

  def adminRole = new SpringRole(authority: 'ROLE_ADMIN').save(flush: true)
  def userRole = new SpringRole(authority: 'ROLE_USER').save(flush: true)

  def testUser = new SpringUser(username: 'me', enabled: true, password: 'password')
  testUser.save(flush: true)

if (!testUser.authorities.contains(adminRole)) {
new SpringUserSpringRole(springUser: testUser, springRole: adminRole).save(flush: true,failOnError: true)
}

if (!testUser.authorities.contains(userRole)) {
new SpringUserSpringRole(springUser: testUser, springRole: userRole).save(flush: true,failOnError: true)
}
}
}

大多数代码都直接引用了Aram Arabyan的答案,Ian Roberts评论了一些修复程序,可以使用我的代码。

2 个答案:

答案 0 :(得分:1)

  if (!testUser.authorities.contains(adminRole)) {
    new SpringUserSpringRole(user: testUser, role: adminRole).save(flush: true,failOnError: true)
  }

 if (!testUser.authorities.contains(userRole)) {
    new SpringUserSpringRole(user: testUser, role: userRole).save(flush: true,failOnError: true)
  }

答案 1 :(得分:0)

只是一个建议,也许您应该尝试为您的角色创建层次结构,而不是为单个用户添加两个角色: see doc