В Springboot я пытаюсь создать API Login, но API возвращает 403 даже учетные данные правыJAVA

Программисты JAVA общаются здесь
Anonymous
В Springboot я пытаюсь создать API Login, но API возвращает 403 даже учетные данные правы

Сообщение Anonymous »

При попытке опубликовать API, он направляет меня в /ошибку
вот отладка -8081-EXEC-2] O.S.Security.Web.FilterChainProxy: защита после /ошибки
2025-02-20T09:34:07.336+05:30 DEBUG 18944 --- [ArtistApp] [NIO-8081-EXEC-2] O.S.S.W.A.AnonyAryAuthenticationFilter: Set SecurityContextholder to Anonymous SecurityContext
2025-202-20T09: 34: 07.342+05: 30 отлад 18944 --- [ArtistApp] [NIO-8081-EXEC-2] O.S.S.W.A.HTTP403FORBIDDENENTRYPOINT: предварительно выпущенная точка входа. Отклонение доступа < /p>
Вот мой контроллер < /p>

Код: Выделить всё

package com.ht_digital.artistapp.controller;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;
import com.ht_digital.artistapp.model.User;
import com.ht_digital.artistapp.service.UserService;
import org.springframework.http.HttpStatus;
import com.ht_digital.artistapp.config.JwtUtil;
import com.ht_digital.artistapp.model.User;
import com.ht_digital.artistapp.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.security.core.Authentication;
import org.springframework.security.core.userdetails.UserDetails;

import org.springframework.security.authentication.AuthenticationManager;
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;

@RestController
@RequestMapping("/api/auth")
@CrossOrigin(origins = "http://localhost:3000")
public class AuthController {

@Autowired
private UserService userService;

@Autowired
private JwtUtil jwtUtil;

private final AuthenticationManager authenticationManager;

public AuthController(AuthenticationManager authenticationManager) {
this.authenticationManager = authenticationManager;

}

@PostMapping("/signup")
public ResponseEntity signup(@RequestBody User user) {
try {

User newUser = userService.registerUser(user);
if (newUser == null) {
return ResponseEntity.ok("Email already exists.  Please login.");
}

return ResponseEntity.ok("User registered successfully.");

} catch (Exception e) {
return ResponseEntity.badRequest().body("An error occurred: " + e.getMessage());
}
}

@PostMapping("/login")
public ResponseEntity login(@RequestBody User user) {
Authentication authentication = authenticationManager.authenticate(
new UsernamePasswordAuthenticationToken(user.getEmail(), user.getPassword()));

UserDetails userDetails = (UserDetails) authentication.getPrincipal();
String token = jwtUtil.generateToken(userDetails.getUsername());

return ResponseEntity.ok(token);
}

}
< /code>
Вот конфигурация Security для кода < /p>
package com.ht_digital.artistapp.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import
org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;

import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.security.web.SecurityFilterChain;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.http.SessionCreationPolicy;

import org.springframework.security.authentication.AuthenticationManager;

import
org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter;

import static org.springframework.security.config.Customizer.withDefaults;

@Configuration
@EnableWebSecurity
public class SecurityConfig {

private final JwtAuthenticationFilter jwtAuthenticationFilter;

public SecurityConfig(JwtAuthenticationFilter jwtAuthenticationFilter) {
this.jwtAuthenticationFilter = jwtAuthenticationFilter;
}

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

@Bean
public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
http
.csrf(csrf -> csrf.disable())
.cors(withDefaults())

.sessionManagement(session -> session.sessionCreationPolicy(SessionCreationPolicy.STATELESS))

.authorizeHttpRequests(auth -> auth
.requestMatchers("/api/auth/signup", "/api/auth/login").permitAll()
.anyRequest().authenticated()

).addFilterBefore(jwtAuthenticationFilter, UsernamePasswordAuthenticationFilter.class);

return http.build();
}

@Bean
public AuthenticationManager authenticationManager(AuthenticationConfiguration authenticationConfiguration) throws Exception {
return authenticationConfiguration.getAuthenticationManager();
}
}

Подробнее здесь: https://stackoverflow.com/questions/794 ... 403-even-c

Вернуться в «JAVA»