Код: Выделить всё
@Configuration
@EnableWebSecurity
@RequiredArgsConstructor
public class SecurityConfig {
private final CustomUserDetailsService userDetailsService;
private final JwtAuthEntryPoint jwtAuthEntryPoint;
@Bean
public AuthTokenFilter authenticationTokenFilter(){
return new AuthTokenFilter();
}
@Bean
public PasswordEncoder passwordEncoder(){
return new BCryptPasswordEncoder();
}
@Bean
public AuthenticationManager authenticationManager(AuthenticationConfiguration authConfig) throws Exception {
return authConfig.getAuthenticationManager();
}
@Bean
public DaoAuthenticationProvider authenticationProvider(){
var authProvider = new DaoAuthenticationProvider();
authProvider.setUserDetailsService(userDetailsService);
authProvider.setPasswordEncoder(passwordEncoder());
return authProvider;
}
@Bean
public SecurityFilterChain filterChain(HttpSecurity http) throws Exception{
http.csrf(AbstractHttpConfigurer::disable) // Disable CSRF for stateless APIs
.exceptionHandling(exception -> exception.authenticationEntryPoint(jwtAuthEntryPoint))
.sessionManagement(session -> session.sessionCreationPolicy(SessionCreationPolicy.STATELESS))
.authorizeHttpRequests(auth->
auth.requestMatchers("/api/auth/**").permitAll()
.requestMatchers("/api/roles/**").permitAll()
.requestMatchers("/api/users/**").permitAll()
.requestMatchers("/courses/**").permitAll()
.anyRequest().authenticated()
);
http.authenticationProvider(authenticationProvider());
http.addFilterBefore(authenticationTokenFilter(), UsernamePasswordAuthenticationFilter.class);
return http.build();
}
}
Код: Выделить всё
@PostMapping("/add-course")
public ResponseEntity addCourse(@RequestBody Course course){
try{
System.out.println("Course body: " + course);
Course theCourse = courseService.addNewCourse(course);
return ResponseEntity.ok(theCourse);
}catch (Exception e){
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(e.getMessage());
}
}
postman post request
Подробнее здесь: https://stackoverflow.com/questions/789 ... st-request