Пароли для регистрации и входа BCryptPasswordEncoder в Spring Security 6 не совпадаютJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Пароли для регистрации и входа BCryptPasswordEncoder в Spring Security 6 не совпадают

Сообщение Anonymous »


Долго не могу решить задачу, много чего прочитал, так и не понял.

В общем, у меня есть форма регистрации пользователя (Thymeleaf), данные из нее передаются в контроллер, затем пароль хешируется и данные отправляются в базу данных через JPA.

но

При попытке войти у меня не проходит авторизация, якобы неправильный пароль.

При этом, если я хэширую пароль на каком-то сайте и вручную ввожу его в базу, то я могу войти позже.

То есть если хэш внесен в базу вручную, то я могу залогиниться. Если регистрация будет проходить через мое приложение, то авторизоваться я не смогу.

Хеш с сайта-генератора получен с помощью одной версии алгоритма, а хэш, который генерирует мое приложение, — с другой версией. Поэтому я не понимаю, как быть, если у меня на все приложение только один bean-компонент PasswordEncoder.

Хеш с сайта-генератора:

$2y$10$/mZ5HhyfMTml2xj0HYEX0uQfFgHDnsdJ3IhX0pReHUTRVSDuoqAPO

Хеш, сгенерированный моим приложением:

$2a$10$2U3MnmqMomhwWQpju1kuy.muBr7TPivlb.wn7XFilMAPJXlwaPx4.

Конфигурация безопасности

@Configuration @EnableWebSecurity @RequiredArgsConstructor общественный класс SecurityConfig { @Бин общественный UserDetailsService userDetailsService () { вернуть новый UserService(); } @Бин общественный PasswordEncoder парольEncoder () { вернуть новый BCryptPasswordEncoder(); } @Бин public SecurityFilterChain securityFilterChain(HttpSecurity http) выдает исключение { вернуть http .authorizeHttpRequests(аутентификация -> аутентификация .requestMatchers("/", "/css/**", "/js/**", "/images/**", "/candidate/**", "/setup/**").permitAll( ) .requestMatchers("/chat/**").hasAnyRole("ADMIN","HEAD","USER") .requestMatchers("/users/**").hasAnyRole("ADMIN","HEAD") .requestMatchers("/admin/**").hasAnyRole("АДМИН") .anyRequest().аутентифицированный() .formLogin((форма) -> форма .loginPage("/логин") .failureUrl("/login?error=true") .defaultSuccessUrl("/карты", true) .permitAll() .logout((выход) -> выход .logoutUrl("/выход") .logoutSuccessUrl("/логин") .deleteCookies("JSESSIONID") .invalidateHttpSession(истина) .clearAuthentication(истина) ) .строить(); } @Бин общественный DaoAuthenticationProvider аутентификацияПровидер () { DaoAuthenticationProvider authProvider = новый DaoAuthenticationProvider (); authProvider.setUserDetailsService(userDetailsService()); authProvider.setPasswordEncoder(passwordEncoder()); вернуть авторизованного поставщика; } } Контроллер регистрационной формы

@Controller @RequestMapping("/setup") класс НастройкаКонтроллер { @Autowired частный UserService userService; @Autowired частный RoleService roleService; @Autowired частный ПарольЭнкодер ПарольЭнкодер; @PostMapping("/create") public String setupUser (пользователь-пользователь) { пытаться { user.setPassword(passwordEncoder.encode(user.getPassword())); userService.save (пользователь); } catch(Исключение е) { System.out.println(e); return "redirect:/setup?error=true"; } вернуть «перенаправление:/логин»; } } Я пытался использовать это:

@Бин общественный PasswordEncoder парольEncoder () { вернуть новый BCryptPasswordEncoder(BCryptVersion.$2Y); } и попробовал SHA-256, но работает так же. Не могу войти после регистрации.

Также я пробовал использовать этот метод:

@Бин @Autowired public AuthenticationProvider аутентификацияProvider (UserDetailsService userDetailsService, PasswordEncoder) { DaoAuthenticationProvider authProvider = новый DaoAuthenticationProvider (); поставщик.setUserDetailsService(userDetailsService); поставщик.setPasswordEncoder(passwordEncoder); вернуть авторизованного поставщика; } но то же самое.
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»