이제 토큰 생성을 만들었으니 로그인 기능을 구현해보자
이번 포스팅은 UserService 쪽에 로그인 메서드를 만드는 간단한 작업이다
@Transactional
public LoginResp login(LoginReq login) {
User user = userRepository.findByUsername(login.getUsername())
.orElseThrow(()->new CustomException(UserException.BAD_REQUEST_LOGIN));
if (!passwordEncoder.matches(login.getPassword(), user.getPassword())) {
throw new CustomException(UserException.BAD_REQUEST_LOGIN);
}
String token = TokenProvider.createToken(user);
return LoginResp.from(user, token);
}
간단한 유효성 검사와 토큰 발급이 포함된 로그인 서비스 코드이다.
jpa나 쿼리사용, resp와 같은건 본인에 맞게 잘 응용해서 만들어서 사용하면 된다
이제 컨트롤러 코드를 만들어보자
@PostMapping("/login")
public Response<LoginResp> login(@RequestBody LoginReq loginReq) {
return Api.success(200, "success", userService.login(loginReq));
}
여기도 별건 없다.
이제 토큰이 잘 발급되는지 실행해보면
어제 만들어둔 아이디와 비밀번호로 잘 로그인됨이 확인 되었다.
이제 다음 포스팅은 드디어 Spring security와 연동하는 부분이다.