我正在使用带有SpringSecurity插件的Grails。我运行s2-quickstart所以用户域类 被命名为“User.groovy”,角色域类被命名为“Role.groovy”。因此,映射类被命名为“UserRole.groovy”。 然后我修改了BootStrap.groovy以创建一个示例用户,这导致了一个令人讨厌的语法错误“Groovy:意外令牌:UserRole @第19行,第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 = {
}
}
答案 0 :(得分: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 = {
}
}