Настройте безопасность Spring для перенаправления пользователя на страницу входа в систему, если он не прошел аутентификацию

У меня есть приложение загрузки Spring с безопасностью Spring.

Моя проблема похожа на Вот этот, но в моем случае я хочу перенаправить пользователя на страницу login, если он не аутентифицирован, когда он пытается получить доступ к странице любой приложения.

На следующем изображении показана архитектура приложения:

Настройте безопасность Spring для перенаправления пользователя на страницу входа в систему, если он не прошел аутентификацию

Мой класс конфигурации выглядит так:

@EnableWebSecurity
@Configuration
public class SecurityConfig extends WebSecurityConfigurerAdapter {

    @Override
    public void configure(HttpSecurity http) throws Exception {
        http.authorizeRequests()
                .antMatchers("/**").hasAnyRole("USER")
                .and().formLogin().loginPage("/login").permitAll()
                .and().authorizeRequests().antMatchers("/resources/**").permitAll().anyRequest().permitAll();
    }

    public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
        auth.inMemoryAuthentication().withUser("user").password("password").roles("USER");
    }

}

В этой конфигурации ресурсы загружаться не будут. Как я могу настроить свой проект для перенаправления пользователя на страницу входа в систему, если он не прошел аутентификацию а также в то же время, когда была загружена моя папка ресурсов?

Где ваша страница входа? На приведенном выше снимке экрана не показано его расположение в вашем проекте.

Kyle Anderson 02.10.2018 16:16

Страница входа находится в папке templates.pages.

Jordan Noel 02.10.2018 16:26
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
9
2
11 554
3

Ответы 3

Обновите свой метод, используя authenticated(), как показано ниже.

@Override
        protected void configure(HttpSecurity http) throws Exception {
            http
              .authorizeRequests()
              .antMatchers("/login*").
              .antMatchers("/resources/**").permitAll()
              .antMatchers("/*.js").permitAll()
              .permitAll()
              .anyRequest()
              .authenticated()
              .and()
              .formLogin();
        }

Обратитесь к эта статья

Это позволяет мне действительно перенаправить моего пользователя на страницу входа, но он по-прежнему не загружает файлы css в папку ressources ...

Jordan Noel 02.10.2018 16:28

обновил ответ..просьба после добавления .antMatchers ("/ resources / **"). allowAll () .antMatchers ("/ *. js"). allowAll ()

Alien 02.10.2018 16:37

plz checkout configure метод

@Override
  public void configure(HttpSecurity http) throws Exception {
    http
        .authorizeRequests()
        .antMatchers("/resources/**").permitAll()
        .antMatchers("/login*").permitAll()
        .anyRequest().authenticated()
        .and().formLogin().loginPage("/login");
  }

и класс implements WebMvcConfigurer, как показано ниже

@Configuration
@EnableWebMvc
public class WebMvcConfiguration implements WebMvcConfigurer {

  @Override
  public void addResourceHandlers(final ResourceHandlerRegistry registry) {
    registry.addResourceHandler("/static/**")
        .addResourceLocations("classpath:/static/");
  }
}

addResourceHandlers означает поиск ресурсов в / static.

Строка http.authorizeRequests().antMatchers("/resources/**").permit‌​All(); позволяет мне получить доступ только к странице по адресу localhost: 8080 / resources / без перенаправления на страницу входа.

Jordan Noel 03.10.2018 14:45

Безопасность Spring не позволяет вашему CSS, когда к нему сделан запрос «GET», разрешить это, изменив следующую строку на следующую строку

эта строка = .antMatchers ("/ *. js"). allowAll ()

эта строка = .antMatchers ("/ *. js", "/ *. css"). allowAll ()

Другие вопросы по теме