스프링 부트에서 JWT 기반 인증을 구현하자

2부: 데이터베이스 통합 및 가입, 로그인 기능 구현



1부에서는 사용자를 하드코딩하여 실제 데이터베이스 없이 기본 JWT 인증을 구현했습니다.




이 자습서에서는 MySQL database의 실제 사용자와 통합하고 암호 해싱을 위해 BCryptPasswordEncoder를 사용하여 가입, 로그인 기능을 구현하여 JWT 인증을 확장합니다.

You can find the github code here

1단계: 사용자 모델 만들기



Jwtuser 모델을 만들고 스프링 보안의 UserDetailsService 인터페이스를 다시 구현합니다.





2단계: Spring Security의 UserDetailsService 인터페이스 재구현

UserDetailsService를 다시 구현하고 이전에 하드코딩한 loadUserByUsername 메서드를 재정의합니다.



<script id="gist-ltag"src="https://gist.github.com/nilmadhab/ef32dc4d79dcbcc9962b277847e53759.js"/>


3단계: SecurityConfigurer 업데이트



비밀번호를 암호화하기 위해 SecurityConfigurer 파일의 passwordencoder 메소드를 변경합니다.




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

Signup, signIn 방법을 사용할 때 인증을 사용하지 않도록 anteaters도 업데이트해야 합니다.



<script id="gist-ltag"src="https://gist.github.com/nilmadhab/7065f312b68a5b7b1f681eb662d78cb9.js"/>


4단계 가입 API 구현



코드는 자명합니다. 이메일이 아직 존재하지 않는지 확인하고 passwordencoder로 비밀번호를 해시하고 사용자를 DB에 저장합니다.



<script id="gist-ltag"src="https://gist.github.com/nilmadhab/f96bddf6424425dafcb68f36ea7578cd.js"/>







6단계 로그인 구현



<올>
  • 스프링 보안 인증 방법으로 사용자를 인증합니다

  • 컨텍스트에서 인증 설정

  • DB에서 사용자 가져오기


  • JWT 생성 및 응답으로 보내기



    <script id="gist-ltag"src="https://gist.github.com/nilmadhab/6119207db2b7ae2d9b738863e766c38d.js"/>





  • 7단계: JWT 토큰으로 구성된 Authorization 헤더로 API 테스트



    토큰이 만료되면 이 오류가 발생합니다.





    토큰이 유효하면 JWT 토큰에서 사용자를 가져오고 인증을 위한 다양한 규칙을 만들 수 있습니다.



    <script id="gist-ltag"src="https://gist.github.com/nilmadhab/14cf7f42603e8b1e7b30b7ff8618bbf4.js"/>





    다음 단계



    <올>
  • ADMIN, USER, MODERATOR와 같은 다양한 역할 생성

  • 전자상거래 자습서에 통합할 예정입니다

  • GitHub를 사용하여 소셜 로그인을 사용하고 Vue.js을 사용하여 프런트엔드를 생성합니다.

  • 좋은 웹페이지 즐겨찾기