feat : jwt 기능 구현
SpecialSource Backend CI/CD / build-and-deploy (push) Successful in 1m41s

This commit is contained in:
2026-05-21 17:57:57 +09:00
parent 8749571474
commit a7077fc693
5 changed files with 108 additions and 14 deletions
@@ -1,26 +1,39 @@
package company.specialsource.controller;
import company.specialsource.config.JwtTokenProvider;
import company.specialsource.dto.LoginRequest;
import company.specialsource.service.UserService;
import lombok.RequiredArgsConstructor;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import java.util.HashMap;
import java.util.Map;
@RestController
@RequestMapping("/api")
@RequiredArgsConstructor
@RequiredArgsConstructor // 롬복이 jwtTokenProvider와 userService의 생성자를 자동으로 만들어줍니다.
public class AuthController {
private final UserService userService;
private final JwtTokenProvider jwtTokenProvider;
private final UserService userService; // 실제 서비스 주입
@PostMapping("/login")
public ResponseEntity<String> login(@RequestBody LoginRequest loginRequest) {
boolean isSuccess = userService.login(loginRequest.getUsername(), loginRequest.getPassword());
public ResponseEntity<?> login(@RequestBody LoginRequest request) {
if (isSuccess) {
return ResponseEntity.ok("로그인 성공!!!");
} else {
return ResponseEntity.status(401).body("아이디 또는 비밀번호가 틀렸습니다.");
// 1. 기존 하드코딩("admin", "1234") 대신 실제 DB를 조회하는 서비스 메서드 호출
if (userService.login(request.getUsername(), request.getPassword())) {
// 2. 로그인 성공 시, 입력받은 username으로 JWT 토큰 생성
String token = jwtTokenProvider.createToken(request.getUsername());
// 3. 응답 상자에 토큰을 담아서 리턴
Map<String, String> response = new HashMap<>();
response.put("token", token);
return ResponseEntity.ok(response);
}
// 4. DB에 유저가 없거나 비밀번호가 틀리면 401 반환
return ResponseEntity.status(401).body("아이디 또는 비밀번호가 틀렸습니다.");
}
}