gpt4 book ai didi

java - JPA 存储库和 Spring Security - 更新对象使密码无效

转载 作者:行者123 更新时间:2023-12-01 23:19:02 26 4
gpt4 key购买 nike

我正在尝试更新我的用户 DTO 的字段,但是每次我通过执行 userService.save(user) 进行更新时,我的登录凭据在数据库中都会变得无效,因为当我第一次获取用户时,我会得到加密的我在 DTO 的密码字段中添加了密码,当我再次保存用户时,我将重新加密加密的密码,使密码与以前不同。

我该如何解决这个问题?当我第一次在用户服务中查询数据库时,我应该解密密码吗?这样安全吗?

编辑:发现你无论如何都无法解码密码(我正在使用 BCryptPasswordEncoder)。有没有办法在不影响密码的情况下更新我的所有字段?

最佳答案

您是否尝试过仅更新列而不保存整个实体?Spring Data JPA 文档中有一个如何创建此类查询的示例:
https://docs.spring.io/spring-data/jpa/docs/2.1.1.RELEASE/reference/html/#jpa.modifying-queries
添加:
是否有办法只保存密码而不重新加密?如果是这样,您也许可以尝试:
- 获取加密密码。
- 更新用户实体(导致加密后的密码被再次加密)。
- 使用步骤 1 中获得的加密密码仅覆盖用户中的密码。

关于java - JPA 存储库和 Spring Security - 更新对象使密码无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58334809/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com