Не удается пройти через всплывающее окно «Требуется аутентификация» в моей консоли H2 - PullRequest
0 голосов
/ 14 мая 2018

Я использую базу данных 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?

1 Ответ

0 голосов
/ 14 мая 2018

прошло много времени с тех пор, как я работал с h2.Я уверен, что вам не нужно использовать свои учетные данные в вашей базе данных.Вместо этого вам придется настроить учетные данные в файле application.properties.

spring.h2.console.enabled=true
spring.h2.console.path=/h2
spring.datasource.url=jdbc:h2:mem:yourdb;MODE=Oracle
spring.datasource.username=sa
spring.datasource.password=

Попробуйте войти с именем пользователя sa и пустым паролем.

...