审计日志如何在springSecurity中的userRole这样的域类中起作用?
class SecUserSecRole implements Serializable {
static auditable = true
User user
Role role
...
def onSave = { map ->
println "onSave userRole detected"
}
}
非常感谢..
答案 0 :(得分:1)
我不完全理解为什么这不起作用,但原因似乎是auditPlugin无法在类的id为复合时获取持久化属性。因此,它假设没有任何改变,它不会调用onSave。
生成的SecUserSecRole
类基于'role', 'user'
引入ID的复合键,auditPlugin正在尝试从hibernate PostInsertEvent
中查找持久化的属性名称。在此不知道为什么但是当域使用复合键时属性将为空。
作为一种解决方法,尝试将域映射更改为
static mapping = {
//id composite: ['role', 'user']
role unique: 'user'
version false
}
<击> 注意:这不是一个解决方案,可能有其他副作用,就springSecurity插件而言。 击>
更新:我关注的是删除复合键可能会影响springSecurity的多对多关系,但根据Burt的post,似乎可以安全地删除复合键,并按照我在此处提到的那样创建它。