Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring boot 使用Spring Boot(使用包org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder)进行密码加密失败_Spring Boot - Fatal编程技术网

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的源代码,这也会有很大帮助。@KedarJoshi
User
entity added.)实体看起来很干净。你能在调用
userRepository.save(user)前后检查密码字段的值吗