Как реализовать базовую аутентификацию при загрузке Spring?

0

Я следил за этим и этим руководством, чтобы создать скелет приложения Angular.JS с основанной на Java бэкэнд. Его код можно найти здесь.

У него есть аутентификация - в начале Spring загружает на консоль случайный пароль, который вы можете использовать для входа в запущенное приложение. Имя user - user и пароль запускается в консоли в начале:

Изображение 174551

Теперь я хочу иметь несколько учетных записей пользователей с фиксированными паролями (это нормально, если они жестко закодированы).

Как я могу сделать это в этом приложении, не нарушая совместимость с AngularJS?

Я полагаю, что мне нужно изменить SecurityConfiguration в UiApplication и использовать что-то вроде

@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
    auth.inMemoryAuthentication()
        .withUser("user")
        .password("password")
        .roles("USER");
}

как объяснено здесь, но я не уверен, что он не сломает AngularJS.

Теги:
spring-boot
spring-security

3 ответа

1
Лучший ответ

Что решение:

@Configuration
@Order(SecurityProperties.ACCESS_OVERRIDE_ORDER)
class SecurityConfiguration extends
    WebSecurityConfigurerAdapter {


    @Autowired
    public void registerAuthentication(AuthenticationManagerBuilder auth) throws Exception {
        auth.inMemoryAuthentication()
            .withUser("user1")
            .password("password1")
            .roles("ADMIN")
            .and()
            .withUser("user2")
            .password("password2")
            .roles("USER");
    }
0

Это не нарушит угловой совместимости. Но в дополнение к изменению кода, о котором вы говорили, вам также необходимо убедиться, что вы разрешаете доступ к URI/login URI анонимно. Также потребуется изменить ваш перегруженный метод configure, а именно:

@Override
protected void configure(HttpSecurity http) throws Exception {
  http
    .httpBasic()
  .and()
    .authorizeRequests()
      .antMatchers("/login.html").permitAll()
  .antMatchers("/index.html", "/home.html").authenticated()
      .antMatchers("/index.html", "/home.html").hasRole("USER")
      .anyRequest().authenticated();
}
0

Пока вы не меняете схему аутентификации (например, BASIC, FORM и т.д.), AngularJS не заботится о том, как вы управляете учетными записями пользователей в бэкэнд. Конечно, если бы вы использовали фиксированный пользователь и пароль и его жестко закодировали в коде AngularJS, вам придется изменить это.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню