首页 > 解决方案 > 使用 Spring Boot 的密码加密(使用包 org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder)失败

问题描述

即使正确编写代码并导入正确的包后也无法加密密码,请在下面找到代码供您参考。附上整个代码以供快速参考,请参考register以下代码中的方法

谢谢

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;
    }



}

标签: spring-boot

解决方案


推荐阅读