Это файл SecurityConfig.java.
Код: Выделить всё
public class SecurityConfig {
@Bean
public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
http
.csrf(csrf -> csrf.disable()) // Disable CSRF globally
.authorizeHttpRequests(authz -> authz
.requestMatchers(HttpMethod.POST, "/api/user/register").permitAll() // Allow /register endpoint
.anyRequest().authenticated() // Secure all other endpoints
)
.httpBasic();
return http.build();
}
@Bean
public PasswordEncoder passwordEncoder() {
return new BCryptPasswordEncoder(); // BCrypt is the most commonly recommended option
}
@Bean
public UserDetailsService userDetailsService() {
return new InMemoryUserDetailsManager(
User.withUsername("user")
.password(passwordEncoder().encode("password"))
.roles("ADMIN")
.build()
);
}
}
Код: Выделить всё
@RestController
@RequestMapping("/api/user")
public class UserController {
@Autowired
UserService userService;
@GetMapping
public ResponseEntity requestMethodName() {
return ResponseEntity.ok(userService.getAllEmployees());
}
@PostMapping("/register")
public ResponseEntity postMethodName(@RequestBody User user) {
userService.createUser(user);
return ResponseEntity.ok("created successfully");
}
}
имя пользователя: пользователь
пароль: созданный_by_spring_security при запуске.
Теперь проблема в том, что
запрос работает нормально и выдает код состояния: 200 (ОК), но
отправляет запрос с кодом состояния: 401 (не авторизовано)
ниже приведено сообщение журнала
Код: Выделить всё
Invalid CSRF token found for http://localhost:8080/api/user/register
Responding with 403 status code
Я хочу сделать запрос на публикацию с помощью почтальона, но он выдает исключение недопустимого токена csrf, в то время как запрос работает нормально. я отключил csrf, но он не работает.
Подробнее здесь: https://stackoverflow.com/questions/791 ... rking-fine