Spring Boot: закодированный пароль не похож на BCrypt - PullRequest
0 голосов
/ 22 октября 2018

Я недавно следовал учебному пособию по авторизации и аутентификации (логин), и все работает отлично, но каждый раз, когда я ввожу имя пользователя и пароль, он показывает ошибку неверных учетных данных.Это мой код.

WebSecurityConfig.java

@Configuration
@EnableWebSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {

    @Autowired
    UserDetailsServiceImpl userDetailsService;

    @Bean
    public BCryptPasswordEncoder passwordEncoder() {
        BCryptPasswordEncoder bCryptPasswordEncoder = new BCryptPasswordEncoder();
        return bCryptPasswordEncoder;
    }

    @Autowired
    public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception { 

        // Setting Service to find User in the database.
        // And Setting PassswordEncoder
        auth.userDetailsService(userDetailsService).passwordEncoder(passwordEncoder());     

    }
}

UserDAO.java

@Repository
@Transactional
public class UserDAO extends JdbcDaoSupport {

    @Autowired
    public UserDAO(DataSource dataSource) {
        this.setDataSource(dataSource);
    }

    public WebUser findUserAccount(String userName) {
        // Select .. from App_User u Where u.User_Name = ?
        String sql = WebUserMapper.BASE_SQL + " where u.Username = ? ";

        Object[] params = new Object[] { userName };
        WebUserMapper mapper = new WebUserMapper();
        try {
            WebUser userInfo = this.getJdbcTemplate().queryForObject(sql, params, mapper);
            return userInfo;
        } catch (EmptyResultDataAccessException e) {
            return null;
        }
    }
}

WebUserMapper.java

public class WebUserMapper implements RowMapper<WebUser> {

    public static final String BASE_SQL //
    = "Select u.Id, u.Username, u.Pass From User u ";

    @Override
    public WebUser mapRow(ResultSet rs, int rowNum) throws SQLException {

        Long userId = rs.getLong("Id");
        String userName = rs.getString("Username");
        String encrytedPassword = rs.getString("Pass");

        return new WebUser(userId, userName, encrytedPassword);
    }
}

EncryptedPasswordUtils.java

public class EncrytedPasswordUtils {

    public static String encrytePassword(String password) {
        BCryptPasswordEncoder encoder = new BCryptPasswordEncoder();
        return encoder.encode(password);
    }
}

это моя база данных:

enter image description here

Ошибка:

Found User: test/$2y$12$nUaUkOYaz0hAsgSippzpdeYPPqFsx3zKT9/H5vojD.YBBlZhLo4RG
2018-10-22 09:53:20.054  WARN 11316 --- [nio-8080-exec-6] o.s.s.c.bcrypt.BCryptPasswordEncoder     : Encoded password does not look like BCrypt

Действительно надеюсь, что вы моглиПомоги мне.Имя пользователя может быть найдено, и оно показывает ошибку каждый раз, когда я пробовал имя пользователя и пароль, которых нет в базе данных.Несмотря на то, что я ввел правильный пароль «123», он возвращает неверные учетные данные.Большое вам спасибо

...