Я использую базу данных H2 в памяти, в которой хранится несколько пользовательских данных, когда я отключен для безопасности.
Однако, когда я снова включаю защиту, у меня появляется это всплывающее окно аутентификации, и у меня нет правильного имени пользователя и пароля, чтобы пройти через него.
Я замечаю каждый раз, когда я набираю во всплывающем окне аутентификации и нажимаю «ОК», сообщение SQL будет показывать:
Hibernate: выберите userinfo0_.user_id в качестве user_id1_1_, userinfo0_.password в качестве password2_1_, userinfo0_.user_name в качестве user_nam3_1_ из user_info userinfo0_, где userinfo0_.user_name =?
информация таблицы и столбца соответствует настройке таблицы моего H2. Я думаю, это должно означать, что это выглядит из моей базы данных.
Однако, несмотря на то, что я ввожу правильное имя пользователя и пароль, он не впустит меня.
Ниже мой класс конфигурации
@Configuration
@EnableWebSecurity
public class WebSecurityConfiguration extends WebSecurityConfigurerAdapter {
@Autowired
private UserDetailsService userInfoService;
@Override
protected void configure(HttpSecurity http) throws Exception {
// @formatter:off
http
.requestMatchers().antMatchers("/login", "/logout", "/oauth/authorize", "/oauth/confirm_access")
.and()
.authorizeRequests()
.antMatchers("/h2","/h2_console/**").hasRole("ADMIN")
.anyRequest().authenticated()
.and()
.formLogin().loginPage("/login").permitAll();
http.csrf().disable();
http.headers().frameOptions().disable();
// @formatter:on
}
public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
auth.inMemoryAuthentication()
.withUser("user").password("user").roles("USER")
.and()
.withUser("admin").password("admin").roles("ADMIN");
}
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
auth.authenticationProvider(authenticationProvider());
}
@Bean
public DaoAuthenticationProvider authenticationProvider(){
DaoAuthenticationProvider authenticationProvider = new DaoAuthenticationProvider();
authenticationProvider.setUserDetailsService(this.userInfoService);
authenticationProvider.setPasswordEncoder(passwordEncoder());
return authenticationProvider;
}
@Bean
public PasswordEncoder passwordEncoder(){
return new BCryptPasswordEncoder();
}
}
У меня есть несколько пользователей, хранящихся в базе данных, некоторые с паролем открытого текста, а другой с зашифрованным паролем с помощью кодера выше.
Мое единственное подозрение - пользователи из базы данных не имеют роли администратора для доступа к пути / h2 (консоль H2).
В любом случае, как мне пройти через это всплывающее окно для доступа к моей консоли h2?