如何在没有密码编码的情况下使用Spring安全性?
我目前正在尝试学习Spring安全性。我曾经在保存到数据库
代码之前对用户密码进行编码:BCryptPasswordEncoder
@Override
public void saveUser(User user) {
user.setPassword(bCryptPasswordEncoder.encode(user.getPassword()));
user.setActive(1);
Role userRole = roleRepository.findByRole("ADMIN");
user.setRoles(new HashSet<Role>(Arrays.asList(userRole)));
userRepository.save(user);
}
然后在身份验证期间也使用它,并且用户按预期进行身份验证。
@Override
protected void configure(AuthenticationManagerBuilder auth)
throws Exception {
auth.
jdbcAuthentication()
.usersByUsernameQuery(usersQuery)
.authoritiesByUsernameQuery(rolesQuery)
.dataSource(dataSource).passwordEncoder(bCryptPasswordEncoder);
}
然后我从方法中删除,仍然具有编码密码的用户成功进行身份验证。.passwordEncoder(bCryptPasswordEncoder);
configure()
然后我从和方法中删除了密码编码器,并将一个保存到数据库中(即没有密码编码),并尝试访问经过身份验证的页面,但我得到了,但是即使我从方法中删除,
具有编码密码的用户仍然会进行身份验证。为什么会发生这种情况?
默认情况下,弹簧安全在身份验证期间是否使用密码编码器?
如果是这样,如何在没有密码编码的情况下使用弹簧安全性?saveUser()
configure()
User
AccessedDeniedException
passwordEncoder()
configure()