Настройте безопасность Spring, чтобы перенаправить пользователя на страницу входа, если он не прошел проверку подлинности. - PullRequest
0 голосов
/ 02 октября 2018

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

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

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

Architecture of the app

Мой класс конфигурации выглядит следующим образом:

@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");
    }

}

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

Ответы [ 2 ]

0 голосов
/ 03 октября 2018

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.

0 голосов
/ 02 октября 2018

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

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

См. эту статью

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...