Spring
Spring 숙련 (5) (로그인 구현 JWT)
sehunbang
2024. 1. 25. 19:57
LoginRequestDTO 만들기
@Setter
@Getter
public class LoginRequestDto {
private String username;
private String password;
}
컨트롤러에 로그인 매핑 추가
// 유저 로그인
@PostMapping("/user/login")
public String login(LoginRequestDto requestDto, HttpServletResponse res){
try {
userService.login(requestDto,res);
}catch (Exception e){
return "redirect:/api/user/login-page?error";
}
return "redirect:/";
}
서비스에
private final JwtUtil jwtUtil;
추가 +
public void login(LoginRequestDto requestDto, HttpServletResponse res) {
String username = requestDto.getUsername();
String password = requestDto.getPassword();
// 사용자 확인
User user = userRepository.findByUsername(username).orElseThrow(
() -> new IllegalArgumentException("등록된 사용자가 없습니다.")
);
// 비밀번호 확인
if (!passwordEncoder.matches(password, user.getPassword())) {
throw new IllegalArgumentException("비밀번호가 일치하지 않습니다.");
}
// JWT 생성 및 쿠키에 저장 후 Response 객체에 추가
String token = jwtUtil.createToken(user.getUsername(), user.getRole());
jwtUtil.addJwtToCookie(token, res);
}