У меня есть приложение загрузки Spring с безопасностью Spring.
Моя проблема похожа на Вот этот, но в моем случае я хочу перенаправить пользователя на страницу login, если он не аутентифицирован, когда он пытается получить доступ к странице любой приложения.
На следующем изображении показана архитектура приложения:
Мой класс конфигурации выглядит так:
@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");
}
}
В этой конфигурации ресурсы загружаться не будут. Как я могу настроить свой проект для перенаправления пользователя на страницу входа в систему, если он не прошел аутентификацию а также в то же время, когда была загружена моя папка ресурсов?
Страница входа находится в папке templates.pages.




Обновите свой метод, используя 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 ...
обновил ответ..просьба после добавления .antMatchers ("/ resources / **"). allowAll () .antMatchers ("/ *. js"). allowAll ()
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/**").permitAll(); позволяет мне получить доступ только к странице по адресу localhost: 8080 / resources / без перенаправления на страницу входа.
Безопасность Spring не позволяет вашему CSS, когда к нему сделан запрос «GET», разрешить это, изменив следующую строку на следующую строку
эта строка = .antMatchers ("/ *. js"). allowAll ()
эта строка = .antMatchers ("/ *. js", "/ *. css"). allowAll ()
Где ваша страница входа? На приведенном выше снимке экрана не показано его расположение в вашем проекте.