0

审计日志如何在 springSecurity 的 userRole 等域类中工作?

class SecUserSecRole implements Serializable {
      static auditable = true

      User user
      Role role

      ...

      def onSave = { map ->
      println "onSave userRole detected"
      }
}

不管怎么说,还是要谢谢你..

4

1 回答 1

1

我不完全理解为什么这不起作用,但原因似乎是 auditPlugin 在类的 id 是复合的时无法获取持久属性。因此,它假定没有任何变化并且它不会调用 onSave。

生成的SecUserSecRole类基于 ID 引入了一个复合键,'role', 'user'并且 auditPlugin 正在尝试从 hibernate 中查找持久的属性名称 PostInsertEvent。目前尚不清楚为什么,但是当域使用复合键时属性将为空。

作为一种解决方法,尝试将您的域映射更改为

static mapping = {
   //id composite: ['role', 'user']
   role unique: 'user'
   version false
}

注意:这不是解决方案,就 springSecurity 插件而言可能会产生其他副作用。

更新:我担心删除复合键可能会影响 springSecurity 多对多关系,但根据 Burt 的帖子,似乎删除复合键并创建它是安全的,正如我在这里提到的那样。

于 2013-07-11T21:17:02.623 回答