2

我正在使用带有 SpringSecurity 插件的 Grails。我运行了 s2-quickstart,因此用户域类被命名为“User.groovy”,而角色域类被命名为“Role.groovy”。因此,映射类被命名为“UserRole.groovy”。然后我修改了 BootStrap.groovy 以创建一个示例用户,这导致了一个令人讨厌的语法错误“Groovy:unexpected token: UserRole @ line 19, column 2”。调用“UserRole.create”时。

这是我的 BootStrap.groovy 文件:

import com.foo.Role
import com.foo.User
import com.foo.UserRole


class BootStrap {

    def springSecurityService

    def userSecRole = Role.findByAuthority("ROLE_USER") ?: new Role()(authority: "ROLE_USER").save()

    def user = new User(
        username: "user",
        password: springSecurityService.encodePassword("user"),
        enabled: true
        )


    UserRole.create user, userSecRole     // <--- This is where the error happens


    def init = { servletContext ->
    }
    def destroy = {
    }
}
4

1 回答 1

2

您已将代码放在主类定义中。

该代码应该在init闭包内,即:

import com.foo.Role
import com.foo.User
import com.foo.UserRole

class BootStrap {

    def springSecurityService

    def init = { servletContext ->
      def userSecRole = Role.findByAuthority("ROLE_USER") ?: new Role()(authority: "ROLE_USER").save()

      def user = new User(
          username: "user",
          password: springSecurityService.encodePassword("user"),
          enabled: true
          )

      UserRole.create user, userSecRole     // <--- This is where the error happens
    }
    def destroy = {
    }
}
于 2012-07-29T14:14:51.600 回答