You need to enable JavaScript to run this app. Spring Security开发疑问:register方法密码未BCrypt编码、全量角色分配作用
优惠活动
大模型
产品
解决方案
定价
更多

Spring Security开发疑问:register方法密码未BCrypt编码、全量角色分配作用

两个暂未检索到参考方案的后端开发问题

以下两个开发场景的问题暂未找到可匹配的参考落地资料,结合实际编写的代码整理疑问如下:

问题1:register()方法调用时密码未完成编码、弹出BCrypt格式警告

  • 目前编写了两个用于存储带加密密码的用户信息的方法,从Controller层调用register()方法时,传入的密码没有完成编码流程,同时弹出警告 Encoded password does not look like BCrypt。已确认该问题与下述代码直接相关,需要明确现象产生的根本原因。
@Override
public User register(String username, String password, String firstName, String lastName, String email) {
    if (userRepository.findByUsername(username).isEmpty()) {
        User user = new User(username, password, firstName, lastName, email);
        user.grantRole(UserRole.ROLE_USER);
        userRepository.save(user);
        return user;
    } else {
        throw new NoSuchUserException();
    }
}

@Override
public void save(User user) {
    user.setPassword(bCryptPasswordEncoder.encode(user.getPassword()));
    user.setRoles(new HashSet<>(roleRepository.findAll()));
    userRepository.save(user);
}

问题2:角色分配代码行的逻辑与适用场景疑问

  • 对代码行user.setRoles(new HashSet<>(roleRepository.findAll()))的作用存在两点疑问:
    • 已知roleRepository.findAll()会返回角色表内存储的全部角色实体,且已经在register()方法中通过grantRole(UserRole.ROLE_USER)为新用户分配了普通用户角色,需要确认该行代码是否会覆盖用户原有的角色配置,为用户分配表内的所有角色
    • 需要明确这种实现方式对应的合理适用场景是什么

以上问题属于基础开发范畴,期待各位的解答。

内容的提问来源于stack exchange,提问作者Erwin Engel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.26 15:45:03