1.下面是我的Bean类
package com.naveen.entity;
import org.springframework.context.annotation.Bean;
public class PasswordEncoder {
@Bean
public PasswordEncoder passwordEncoder() {
return new BCryptPasswordEncoder();
}
public String encode(String passWord) {
// TODO Auto-generated method stub
return null;
}
}
1.然后,我创建了BCryptPasswordEncoder.java类,如下所示:
package com.naveen.entity;
import org.springframework.stereotype.Component;
@Component
public class BCryptPasswordEncoder extends PasswordEncoder {
}
1.然后,我自动连接了Controller类,并在saveUser()中添加了加密函数,如下所示:
public class UserController {
@Autowired
PasswordEncoder passwordEncoder;
@PostMapping("/saveUser")
public int saveUser(@RequestBody User user) throws Exception {
String encryptedPassword =passwordEncoder.encode(user.getPassWord());
user.setPassWord(encryptedPassword);
userService.saveUser(user);
System.out.println("Inserted data with id: "+ user.getId());
return 1;
}
4. Service class as follows,
@Service
public class UserServiceImpl implements UserService {
@Autowired
private UserMapper userMapper;
@Override
public void saveUser(User user) {
userMapper.saveUser(user);
} }
当我运行代码时,我得到了下面的错误,com.naveen.controller中的字段passwordEncoder。UserController需要一个类型为“com.naveen.entity.PasswordEncoder”的bean,但找不到。注入点有以下注解:- @org.springframework.beans.工厂.注解.自动连线(必需=true)操作:请考虑在配置中定义类型为“com.naveen.entity.PasswordEncoder”的Bean。
请帮我解决我哪里出了问题。
5条答案
按热度按时间2eafrhcq1#
您需要将@Component注解添加到BCryptPasswordEncoder类中
那就行了。
u5i3ibmn2#
在PumpkinX的回答中,请按以下顺序排列您的陈述:
注意,在读取和编码数据之后,
userService.saveUser(user);
?由于你有top的这个语句,它导致它有空值。643ylb083#
我知道我晚了。但是你错过了编码函数的实现。
只需将encode函数替换为以下代码即可。
这将加密密码,而不是返回空值。
5kgi1eie4#
如果你想要一个真实的的加密算法或加密机制来存储密码在yml文件或传递敏感数据到您的应用程序,你可以尝试和使用 JASYPT for Spring Boot .
Jasypt是一个在运行时加密和解密Sping Boot 属性的库,而不用担心如何处理加密逻辑和解密逻辑。
yjghlzjz5#
我只是扭曲了你的密码
}
1.密码编码
1.编码密码-Example