Grails使用spring security更新嵌入对象但没有编码密码
Posted
技术标签:
【中文标题】Grails使用spring security更新嵌入对象但没有编码密码【英文标题】:Grails update embedded object but no encoding password using spring security 【发布时间】:2019-03-02 20:35:37 【问题描述】:我正在尝试更新一个嵌入对象,但是当对象更新时,密码用户再次被编码。
我想将 Card 对象更新为 User 类。 UserService 应该只更新卡片对象,但它正在更新密码对象。
UserPasswordEncoderListener 是 grails spring 安全核心插件的默认值。
使用:
grailsVersion=3.3.8 grailsWrapperVersion=1.0.0 gormVersion=6.1.10.RELEASE gradleWrapperVersion=3.5 mongodb:6.1.6有什么想法吗?或者我做错了什么? 处理嵌入对象的最佳方法是什么?
github bug
用户类
客户类别
卡类
用户服务类
用户密码编码器监听器
【问题讨论】:
【参考方案1】:看起来密码也在某处更新,所以 UserPasswordEncoderListener 中的 u.isDirty( 'password' )
返回 true
。
您应该能够通过将其设置为 null
来禁止密码更新。
【讨论】:
以上是关于Grails使用spring security更新嵌入对象但没有编码密码的主要内容,如果未能解决你的问题,请参考以下文章
带有 Spring Security Core 的 Grails 仅允许所有者在 GSP 中更新
Grails:乐观锁定,StaleObjectStateException 与 Spring Security 会话中的域,更新计数器
Grails Spring Security 插件 - 修改登录用户的权限
Grails spring security core 3.1.2 和 mongodb