【问题标题】:grails audit-logging plugin onSave in UserRole用户角色中的 grails 审计日志插件 onSave
【发布时间】:2013-07-09 05:22:17
【问题描述】:

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

class SecUserSecRole implements Serializable {
      static auditable = true

      User user
      Role role

      ...

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

还是谢谢..

【问题讨论】:

  • 在 userRole 域中未检测到 onSave
  • 在哪里可以解决您的问题?
  • 我在域类上输入手动审计日志

标签: grails grails-domain-class audit-logging


【解决方案1】:

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

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

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

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

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

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

【讨论】:

    猜你喜欢
    • 2012-10-01
    • 2012-03-27
    • 1970-01-01
    • 1970-01-01
    • 2014-06-21
    • 2014-06-30
    • 2011-02-21
    • 1970-01-01
    • 2015-11-26
    相关资源
    最近更新 更多