уже тильт. У меня есть приложение spring mvc. У него есть метод get, который возвращает страницу «staff_profile_for_user». С этой страницы я отправляю метод post, который должен прийти к соответствующему методу в контроллере. По непонятным причинам туда он не приходит У меня включен csrf в приложении. Я пытался передать токен двумя способами. В обоих случаях токен вставляется в форму. Я хотел бы отметить, что когда я включаю настройку csrf.disable() в цепочке фильтров, все начинает работать. В других post методах все работает. Что еще я могу попробовать сделать? В чем может быть проблема? Ниже прикрепляю фрагменты кода.
                  
                  
                  
                  
                  
                  staff_profile_for_user.html
                  
                  
                  
                  
                  
                  <!DOCTYPE html>
                  
                  
                  <html xmlns="http://www.w3.org/1999/xhtml" xmlns:th="https://www.thymeleaf.org" lang="en">
                  
                  
                  <head>
                  
                  
                      <meta charset="UTF-8">
                  
                  
                      <title>Profile</title>
                  
                  
                  </head>
                  
                  
                  <body>
                  
                  
                      <div th:object="${staff}">
                  
                  
                          <img width="200" height="200" th:src="${'/api/staff/staff_image/' + id}">
                  
                  
                          <p th:text="*{'Email: ' + email}"></p>
                  
                  
                          <p th:text="*{'Name: ' + name}"></p>
                  
                  
                          <p th:text="*{'Surname: ' + surname}"></p>
                  
                  
                          <p th:text="*{'Position: ' + position}"></p>
                  
                  
                          <p th:text="*{'Department: ' + department}"></p>
                  
                  
                      </div>
                  
                  
                      <form th:action="@{/api/staff/{id}(id=${staff.id})}" method="post">
                  
                  
                  <!--        <input-->
                  
                  
                  <!--                type="hidden"-->
                  
                  
                  <!--                th:name="${_csrf.parameterName}"-->
                  
                  
                  <!--                th:value="${_csrf.token}" />-->
                  
                  
                          <button type="submit">Make an appointment</button>
                  
                  
                      </form>
                  
                  
                  </body>
                  
                  
                  </html>
                  
                  
                  методы get и post (post без логики) 
                  
                  
                  
                  
                  
                  
                  
                  
                  @GetMapping("/{id}")
                  
                  
                      public String getAllInfo(@PathVariable String id, Model model) {
                  
                  
                          StaffDto staffDto = webClient.get()
                  
                  
                                  .uri("/server/staff/"+id)
                  
                  
                                  .retrieve()
                  
                  
                                  .bodyToMono(StaffDto.class)
                  
                  
                                  .block();
                  
                  
                          model.addAttribute("staff", staffDto);
                  
                  
                          return "staff_profile_for_user";
                  
                  
                      }
                  
                  
                      @PostMapping("/{id}")
                  
                  
                      public String makeAppointment(@PathVariable String id) {
                  
                  
                          System.out.println(id);
                  
                  
                          return "redirect:/api/auth/main";
                  
                  
                      }
                  
                  
                  Конфигурация безопасности
                  
                  
                  
                  
                  
                  @Configuration
                  
                  
                  @EnableWebSecurity
                  
                  
                  @RequiredArgsConstructor
                  
                  
                  @EnableGlobalMethodSecurity(prePostEnabled = true)
                  
                  
                  public class SecurityConfig {
                  
                  
                  
                  
                  
                      private final JwtFilter jwtFilter;
                  
                  
                  
                  
                  
                      @Bean
                  
                  
                      public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
                  
                  
                          return http
                  
                  
                                  .httpBasic().disable()
                  
                  
                                  //.csrf().disable()
                  
                  
                                  .sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS)
                  
                  
                                  .and()
                  
                  
                                  .authorizeHttpRequests(
                  
                  
                                          authz -> authz
                  
                  
                                                  .requestMatchers("/login", "/registration").permitAll()
                  
                  
                                                  .anyRequest().authenticated()
                  
                  
                                                  .and()
                  
                  
                                                  .addFilterAfter(jwtFilter, UsernamePasswordAuthenticationFilter.class)
                  
                  
                                  )
                  
                  
                                  .build();
                  
                  
                      }
                  
                  
                      @Bean
                  
                  
                      public static PasswordEncoder passwordEncoder() {
                  
                  
                          return new BCryptPasswordEncoder();
                  
                  
                      }
                  
                  
                  }
                  
                  
                
Такая простыня — как минимум неуважение к участкам группы, которые могут тебе помочь.
 Апулей
                          
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                      
                      
                        
                          Апулей
                          
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                    
                    
                  А в чем неуважение?
В том что такое невозможно читать в виде сообщения в телеграмме.
Обсуждают сегодня