如何在springSecurity中的userRole这样的域类中使用审计日志?
class SecUserSecRole implements Serializable {
static auditable = true
User user
Role role
...
def onSave = { map ->
println "onSave userRole detected"
}
}
不管怎么说,还是要谢谢你..
最佳答案
我不完全理解为什么这行不通,但是原因似乎是auditPlugin在类的ID为复合时无法获取持久属性。因此,它假定没有任何变化,并且不会调用onSave。
生成的SecUserSecRole
类引入了一个基于'role', 'user'
的ID组合键,auditPlugin试图从休眠的PostInsertEvent
中查找持久的属性名称。在此尚不清楚原因,但当域使用复合键时属性将为空。
解决方法是尝试将您的域映射更改为
static mapping = {
//id composite: ['role', 'user']
role unique: 'user'
version false
}
注意:这不是解决方案,就springSecurity插件而言,可能还有其他副作用。
更新:我关心的是删除组合键可能会影响springSecurity多对多关系,但是根据Burt的post,删除组合键并按照我在此提到的方式创建它似乎是安全的。