Spring boot 使用Spring Boot(使用包org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder)进行密码加密失败
即使正确编写代码并导入正确的软件包,也无法加密密码,请查找下面的代码以供参考。 随附完整代码以供快速参考,请参考以下代码中的Spring boot 使用Spring Boot(使用包org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder)进行密码加密失败,spring-boot,Spring Boot,即使正确编写代码并导入正确的软件包,也无法加密密码,请查找下面的代码以供参考。 随附完整代码以供快速参考,请参考以下代码中的注册方法 多谢各位 import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.crypto.bcrypt.BCryptPa
注册
方法
多谢各位
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import com.shameem.flightreservation.entities.User;
import com.shameem.flightreservation.repos.UserRepository;
import com.shameem.flightreservation.services.SecurityService;
@Controller
public class UserController {
@Autowired
UserRepository userRepository;
@Autowired
SecurityService securityService;
@Autowired
private BCryptPasswordEncoder encoder;
private static final Logger LOGGER=LoggerFactory.getLogger(UserController.class);
@RequestMapping("/showReg")
public String showRegistrationPage()
{
LOGGER.info("Inside showRegistrationPage()");
return "Login/userRegistration";
}
@RequestMapping(value="/registerUser")
public String register(@ModelAttribute("user") User user)
{
//LOGGER.info("Inside register()" + user);
user.setPassword(encoder.encode(user.getPassword()));
LOGGER.info("After Encrypt Inside register()" + user);
if(!(user.getEmail()==null))
userRepository.save(user);
return "Login/login";
}
@RequestMapping("/showLogin")
public String showLoginPage()
{
LOGGER.info("Inside showLoginPage()");
return "Login/login";
}
@RequestMapping(value="/login",method = RequestMethod.POST)
public String login(@RequestParam("email") String email,@RequestParam("password") String password,ModelMap modelMap)
{
//User user=userRepository.findByEmail(email);
Boolean loginResponse=securityService.login(email, password);
LOGGER.info("Inside login() and the email is: " + email);
if(loginResponse)
{
return "findFlights";
}
else
{
modelMap.addAttribute("msg","Invalid user name or password");
}
return "Login/login";
}
}
用户实体
import java.util.Set;
import javax.persistence.Entity;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.ManyToMany;
@Entity
public class User extends AbstractEntity {
private String firstName;
private String lastName;
private String email;
private String password;
@ManyToMany
@JoinTable(name="user_role",joinColumns =@JoinColumn(name="user_id"),inverseJoinColumns = @JoinColumn(name="role_id"))
private Set<Role> roles;
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
@Override
public String toString() {
return "User [firstName=" + firstName + ", lastName=" + lastName + ", email=" + email + ", password=" + password
+ "]";
}
public Set<Role> getRoles() {
return roles;
}
public void setRoles(Set<Role> roles) {
this.roles = roles;
}
}
import java.util.Set;
导入javax.persistence.Entity;
导入javax.persistence.JoinColumn;
导入javax.persistence.JoinTable;
导入javax.persistence.ManyToMany;
@实体
公共类用户扩展抽象实体{
私有字符串名;
私有字符串lastName;
私人字符串电子邮件;
私有字符串密码;
@许多
@JoinTable(name=“user\u role”,joinColumns=@JoinColumn(name=“user\u id”),inverseJoinColumns=@JoinColumn(name=“role\u id”))
私人设定角色;
公共字符串getFirstName(){
返回名字;
}
public void setFirstName(字符串firstName){
this.firstName=firstName;
}
公共字符串getLastName(){
返回姓氏;
}
public void setLastName(字符串lastName){
this.lastName=lastName;
}
公共字符串getEmail(){
回复邮件;
}
公用电子邮件(字符串电子邮件){
this.email=电子邮件;
}
公共字符串getPassword(){
返回密码;
}
public void setPassword(字符串密码){
this.password=密码;
}
@凌驾
公共字符串toString(){
返回“User[firstName=“+firstName+”,lastName=“+lastName+”,email=“+email+”,password=“+password
+ "]";
}
公共集getRoles(){
返回角色;
}
公共无效集合角色(集合角色){
this.roles=角色;
}
}
您可以添加确切异常的stacktrace吗?@KedarJoshi没有异常,代码运行正常,但在数据库中,密码保存为普通文本。。然后,您需要通过设置断点来检查要保存的确切值。如果您可以在问题中添加User
entity的源代码,这也会有很大帮助。@KedarJoshiUser
entity added.)实体看起来很干净。你能在调用userRepository.save(user)前后检查密码字段的值吗代码>?