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
相关产品推荐
相关产品推荐

