Grails,Spring Security核心插件,角色管理

时间:2015-04-22 17:56:33

标签: grails spring-security

我使用Spring Security核心插件设置了一个新项目。我的目标是简单的登录/注销,用户管理(CRUD),包括角色(管理员,用户)。只是管理员应该能够创建用户,因此不需要注册。

我遵循了本教程(文档):

http://grails-plugins.github.io/grails-spring-security-core/guide/tutorials.html#usingControllerAnnotations

现在我有一个User,Role和UserRole Domain类以及CRUD功能。遗憾的是,缺少角色管理。在最好的情况下,角色应由管理员在“创建用户进程”中指定。

我注意到的另一件事是我无法向生成的用户类添加任何其他字段。只是添加“String lastName”会导致以下错误(run-app):

2015-04-22 19:50:57,749 [localhost-startStop-1] ERROR context.GrailsContextLoaderListener  - Error initializing the application: No signature of method: test.UserRole.exists() is applicable for argument types: (null, java.lang.Long) values: [null, 1]
Possible solutions: exists(long, long), exists(java.io.Serializable), list(), first(), wait(), last()
Message: No signature of method: test.UserRole.exists() is applicable for argument types: (null, java.lang.Long) values: [null, 1]
Possible solutions: exists(long, long), exists(java.io.Serializable), list(), first(), wait(), last()

是否有“简单”的方法来实施角色管理并修复此错误?

我应该切换到Spring Security ui插件吗?看来这个插件实现了很多我不需要的功能。

编辑:我在User类中添加了一个字段“role”,用于在用户创建期间指定角色。现在我应该在UserRole实体中设置User和Role之间的连接。我在UserController.create方法中添加了以下行:

def adminRole = new Role(authority: 'ROLE_ADMIN').save(flush: true)

      def user = new User(params)
      user.save(flush: true)

      UserRole.create user, adminRole, true

      respond user

但我猜它在错误的地方,因为我无法使用已创建的用户访问受保护的URL

0 个答案:

没有答案