Spring Security не даёт подгрузиться js

Раньше я не работал со Spring Security, поэтому я новичок здесь

У меня есть страница которая подгружает js, я выставил доступ для всех к пакету с js, но он все равно не пропускает

Отправив запросы с помощью postman на адреса, я понял, что при взаимодействии с js мне прилетает страница логина

@Configuration
public class MvcConfig implements WebMvcConfigurer {

    public void addViewControllers(ViewControllerRegistry registry) {
        registry.addViewController("/welcome").setViewName("welcome");
        registry.addViewController("/").setViewName("welcome");
        registry.addViewController("/hello").setViewName("hello");
        registry.addViewController("/admin").setViewName("admin");
        registry.addViewController("/login").setViewName("login");
        registry.addViewController("/registration").setViewName("registration");
    }
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry
                .addResourceHandler("/static/**")
                .addResourceLocations("classpath:/static/"); // указывает на путь к директории со статическими ресурсами
    }

}

Это файл конфигурации Spring Security

@Configuration
@EnableWebSecurity
@EnableMethodSecurity
public class WebSecurityConfig {

    @Bean
    public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
        http
                .csrf().disable()
                .authorizeHttpRequests((requests) -> requests
                        .requestMatchers("/", "/welcome", "/registration", "/admin", "/resources/**", "/add", "/listOfUsers" ).permitAll()

                        .anyRequest().authenticated()
                )
                .formLogin((form) -> form
                        .loginPage("/login")
                        .permitAll()
                )
                .logout((logout) -> logout.permitAll());

        return http.build();
    }

    @Bean
    public UserDetailsService userDetailsService() {
        return new MyUserDetailsService();
    }

    @Bean
    public AuthenticationProvider authenticationProvider(){
        DaoAuthenticationProvider provider = new DaoAuthenticationProvider();
        provider.setUserDetailsService(userDetailsService());
        provider.setPasswordEncoder(passwordEncoder());
        return provider;
    }

    @Bean
    public PasswordEncoder passwordEncoder() {
        return new BCryptPasswordEncoder();
    }
}

Файл контроллера

@RestController
public class BackendController {
    @Autowired
    private UserRepository userRepository;

    private PasswordEncoder passwordEncoder;


  // Обработка POST запроса и сохранение объекта User в БД
    @PostMapping("/add")
    public void processFormData(@RequestBody String jsonUser) throws JsonProcessingException {
        User user = jsonStringToUser(jsonUser);  // Получаю объект User из json
        user.setPassword(passwordEncoder.encode(user.getPassword()));
        System.out.println(user);
        userRepository.save(user);
    }
    // Отправка списка объектов User на фронт в json формате
    @GetMapping("/listOfUsers")
    public String listOfUsers() throws JsonProcessingException {
        List<User> users = userRepository.findAll();
        return usersToJson(users);  // Возвращаю список объектов User в виде json
    }
    // Преобразование json в объект User
    private User jsonStringToUser(String jsonUser) throws JsonProcessingException {
        ObjectMapper objectMapper = new ObjectMapper();
        User user = objectMapper.readValue(jsonUser, User.class);
        return user;
    }
    // Преобразование списка объектов User в json
    private String usersToJson(List<User> users) throws JsonProcessingException {
        ObjectMapper objectMapper = new ObjectMapper();
        String jsonUsers = objectMapper.writeValueAsString(users);
        return jsonUsers;
    }
}

JS файл

// Функция обработки и отправки POST запроса в бэк
function submitForm() {
    // Считываемые поля
    var firstName = document.getElementById("firstName").value;
    var secondName = document.getElementById("secondName").value;
    var phoneNumber = document.getElementById("phoneNumber").value;
    var email = document.getElementById("email").value;
    var username = document.getElementById("username").value;
    var password = document.getElementById("password").value;
    var role;
    if (document.getElementById('role_student').checked) {
        role = document.getElementById('role_student').value;
    }
    else{
        role = document.getElementById('role_teacher').value;
    }

    // Отправка данных в бэк
    fetch('/add', {
        method: 'POST',
        credentials: 'include',
        headers: {
            'Content-Type': 'application/json'
        },
        // Формирование json для отправки
        body: JSON.stringify({firstName: firstName, secondName: secondName, phoneNumber: phoneNumber,
                                email: email, username: username, password: password, role: role})
    })
    .then(response => response.json())
    .then(data => {
        // Получение ответа от бэка
        console.log(data);

    })
    .catch(error => {
        console.error('Error:', error);
    });

}
//  Функция для получения всех записей из таблицы user (для отладки), в дальнейшем скорее всего уберу
// Сделал её асинхронной для того, чтобы методы fetch() и .json() успели закончить свой жизненный цикл
async function getListOfUsers(){
    let response = await fetch("/listOfUsers");
    let users = await response.json();
    let list = document.querySelector('.listOfUsers');
    // Формирую новую строку для выводы записи в таблицу
    for(key in users){
        list.innerHTML += `
            <tr>
                <th>${users[key].firstName}</th>
                <th>${users[key].secondName}</th>
                <th>${users[key].phoneNumber}</th>
                <th>${users[key].email}</th>
                <th>${users[key].username}</th>
                <th>${users[key].password}</th>
                <th>${users[key].role}</th>
             </tr>
        `;
    }

}

getListOfUsers();

если я отправляю запрос с помощью postman на адреса REST-контроллера, то все нормально работает, но если открывать страницу через браузер, то js просто выдает статус 302 и не подгружается


Ответы (0 шт):