无法使用Spring Security在Grails 2.1.1中创建用户对象

时间:2012-09-28 19:13:06

标签: grails spring-security grails-2.0

我有以下课程

class SentryUser {

    transient springSecurityService

    String userName
    String password
    boolean enabled
    boolean accountExpired = false
    boolean accountLocked = false
    boolean passwordExpired   = false

    static constraints = {
        userName blank: false, unique: true
        password blank: false
    }

    static mapping = {
        password column: '`password`'
    }

    Set<SentryRole> getAuthorities() {
        SentryUserSentryRole.findAllBySentryUser(this).collect { it.sentryRole } as Set
    }

    def beforeInsert() {
        encodePassword()
    }

    def beforeUpdate() {
        if (isDirty('password')) {
            encodePassword()
        }
    }

    protected void encodePassword() {
        password = springSecurityService.encodePassword(password)
    }
}

我在bootstrap中调用以下代码

def admin = new SentryUser(userName: "sample@sample.com",
                enabled: true).save(failOnError: true)

并收到以下错误

context.GrailsContextLoader Error executing bootstraps: groovy.lang.MissingMethodException: No signature of method: SentryUser.save() is applicable for argument types: () values: []

我正在使用grails 2.1.1并使用spring security插件。

1 个答案:

答案 0 :(得分:1)

您正在调用save(Map),但MME抱怨save()没有参数。我之前在我的应用程序中没有安装任何持久性插件(hibernate / mongodb)时看到了这种差异 - 这是一个插件项目,我试图作为一个独立的应用程序运行,并且是一个新的插件项目的默认BuildConfig不包括对hibernate的依赖。