添加与SpringSecurity User类的关联

时间:2012-10-21 15:57:16

标签: grails spring-security gorm

我正在尝试将默认的Spring Security用户域类的引用添加到另一个应该包含其他用户信息的类中。

class User {
    transient springSecurityService

    String username
    String password
    boolean enabled
    boolean accountExpired
    boolean accountLocked
    boolean passwordExpired

    Profile profile
      ...

...和...

class Profile {
    static constraints = {
    }

    static belongsTo = [user : User]

    String firstName
    String lastName     
}

从我读到的内容应该是它的工作方式,但我收到以下错误:

ERROR context.GrailsContextLoader  - Error executing bootstraps: null
Message: null
   Line | Method
->>  32 | create                           in com.app.UserRole
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
|    15 | doCall                           in BootStrap$_closure1
|   301 | evaluateEnvironmentSpecificBlock in grails.util.Environment
|   294 | executeForEnvironment            in     ''
|   270 | executeForCurrentEnvironment . . in     ''
|   303 | innerRun                         in java.util.concurrent.FutureTask$Sync
|   138 | run . . . . . . . . . . . . . .  in java.util.concurrent.FutureTask
|   886 | runTask                          in java.util.concurrent.ThreadPoolExecutor$Worker
|   908 | run . . . . . . . . . . . . . .  in     ''
^   662 | run                              in java.lang.Thread

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

我们需要确定您的BootStrap,但我怀疑这是因为您正在做的事情

def user = new User(....).save()
def role = new Role(....).save()
UserRole.create(user, role)

并且您的新User验证失败(导致save返回null)。

如果你使用save(failOnError:true),你应该得到一个不同的例外,以更好地指出真正的问题是什么。检查constraints类中是否具有正确的User,特别注意GORM属性默认为不可为空,因此如果您希望能够保存User,则不能使用Profile如果有profile(nullable:true),您需要添加约{{1}}。