azerphoenix
@azerphoenix
Java Software Engineer

Откуда взялся редирект на статичный файл?

Доброго времени суток!
Изучаю разработку на spring и столкнулся со следубщей проблемой. Подключил бустрап через cdn и все работало. Подключил дополнительные css & js файлы локально и после авторизации на сайте в первую очередь редиректит на статичный подключаемый файл (раньше, он успешно редиректил на страницу профиля).

Вот, структура шапки
<!doctype html>
<html lang="ru">
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">

    <!-- Styles-->
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">

    <!-- Scripts -->
    <script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script>
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>

    <script src="js/main.js"></script>
    <link rel="stylesheet" href="css/style.css">

    <title>Website Example</title>
</head>


WebSecurityConfig.java
@Configuration
@EnableWebSecurity
@EnableGlobalMethodSecurity(prePostEnabled = true)
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {

    @Autowired
    private DataSource dataSource;

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http
                .authorizeRequests()
                .antMatchers("/","/signup").permitAll()
                .anyRequest().authenticated()
                .and()
                .formLogin()
                .loginPage("/signin").defaultSuccessUrl("/profile")
                .permitAll()
                .and()
                .logout().logoutRequestMatcher(new AntPathRequestMatcher("/logout")).logoutSuccessUrl("/signin")
                .permitAll();
    }

    @Override
    protected void configure(AuthenticationManagerBuilder auth) throws Exception {
        auth.jdbcAuthentication()
                .dataSource(dataSource)
                .passwordEncoder(NoOpPasswordEncoder.getInstance())
                .usersByUsernameQuery("SELECT username, password, active FROM users WHERE username=?")
                .authoritiesByUsernameQuery("SELECT u.username, ur.roles FROM users u INNER JOIN user_role ur ON u.user_id = ur.r_user_id WHERE u.username=?");
    }

}



После авторизации попадаю на http://localhost:8080/css/style.css вместо того, чтобы попасть на /profile

Это произошло именно после подключения статичных скриптов и стилей.
  • Вопрос задан
  • 242 просмотра
Решения вопроса 1
azerphoenix
@azerphoenix Автор вопроса, куратор тега Spring
Java Software Engineer
В общем решил проблему.
На всякий случай, напишу решение сюда, чтобы другим помочь.
Если вы столкнулись с этой проблемой, то наверняка вы подключили Spring Security и не указали директории css js fonts и др. статичный контент для игнорирования.
Проблема наблюдалась после входа на сайт и после авторизации открывался первый статичный файл из шапки. В моем случае style.css

РЕШЕНИЕ:
В файл WebSecurityConfig
добавьте
следующий код:
@Override
    public void configure(WebSecurity web) throws Exception {
        web.ignoring().antMatchers("/css/**","/js/**","/fonts/**","/images/**");
    }


Ссылка на источник: StackOverflow
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы