Spring boot и jwt Закодированный пароль не похож на BCrypt - PullRequest
0 голосов
/ 15 марта 2019

Я знаю, что есть несколько вопросов по этому поводу, но ни один из них не помог, мне все показалось хорошо ... Надеюсь, я ошибаюсь.
Я следовал этому руководству , чтобы создать аутентификацию с JWT для моего приложения Spring Boot, но я застрял с этим предупреждением

 o.s.s.c.bcrypt.BCryptPasswordEncoder     : Encoded password does not look like BCrypt

Это класс, который расширяет WebSecurityConfigurerAdapter:

@EnableWebSecurity
public class WebSecurity extends WebSecurityConfigurerAdapter {



    private UserDetailsService userDetailsService;



    private BCryptPasswordEncoder bCryptPasswordEncoder;



    public WebSecurity(UserDetailsService userDetailsService, BCryptPasswordEncoder bCryptPasswordEncoder) {
        this.userDetailsService = userDetailsService;
        this.bCryptPasswordEncoder = bCryptPasswordEncoder;
    }



    @Override
    protected void configure(HttpSecurity http) throws Exception {

        http.csrf().disable().authorizeRequests()       
                .antMatchers(HttpMethod.POST, SIGN_UP_URL).permitAll()
                .anyRequest().authenticated()
                .and()
                .addFilter(new JWTAuthenticationFilter(authenticationManager()))
                .addFilter(new JWTAuthorizationFilter(authenticationManager()));
    }



    @Override
    public void configure(AuthenticationManagerBuilder auth) throws Exception {
        auth.userDetailsService(userDetailsService).passwordEncoder(bCryptPasswordEncoder);
    }
}

И это класс, который реализует UserDetailsService:

public class UserDetailsServiceImpl implements UserDetailsService {



    private ApplicationUserRepository applicationUserRepository;



    public UserDetailsServiceImpl(ApplicationUserRepository applicationUserRepository) {
        this.applicationUserRepository = applicationUserRepository;
    }



    @Override
    public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
        System.out.println("loadUserByUsername");
        ApplicationUser applicationUser = applicationUserRepository.findByUsername(username);

        if (applicationUser == null) {
            System.out.println("User non trovato");
            throw new UsernameNotFoundException(username);
        }
        System.out.println("Username: " + applicationUser.getUsername());
        return new User(applicationUser.getUsername(), applicationUser.getPassword(), emptyList());
    }

}

Кроме того, мне интересно, где класс WebSecurity istantiated с правильными переданными параметрами. Это управляется автоматически весной?

1 Ответ

0 голосов
/ 18 марта 2019

Обнаружил проблему, в том, что у моего класса UserDetailsServiceImpl не было аннотации "@Service".Теперь работает нормально.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...