[ JwtFilter - ArgumentResolver 실습 ]
(1) JWT 의존성 추가(build.gradle)
// jwt
compileOnly group: 'io.jsonwebtoken', name: 'jjwt-api', version: '0.11.5'
runtimeOnly group: 'io.jsonwebtoken', name: 'jjwt-impl', version: '0.11.5'
runtimeOnly group: 'io.jsonwebtoken', name: 'jjwt-jackson', version: '0.11.5'
(2) jwt.secret.key 추가(application.properties)
jwt.secret.key=OFJSU3pod0t2WUxmaXY2Z2ZncjhJQmVtdlo1UWJId3E=
*참고 사이트
CodeIgniter Encryption Keys - Can be used for any other 256-bit key requirement.
RandomKeygen - The Secure Password & Keygen Generator
RandomKeygen is a free mobile-friendly tool that offers a randomly generated keys and passwords you can use to secure any application, service or device.
randomkeygen.com
https://www.base64encode.org/ko
인코딩
Base64 인코딩 및 디코딩 - 온라인
Base64 형식으로 인코딩해보세요. 아니면 다양한 고급 옵션으로 디코딩해보세요. 저희 사이트에는 데이터 변환하기에 사용하기 쉬운 온라인 도구가 있습니다.
www.base64encode.org
(3) JwtUtil 클래스 생성
: 여기까지는 로그인(인증)을 통한 Jwt토큰 발급 가능
이후에 JwtFilter(JWT 유저 데이터 추출/ request.setAttribute) - ArgumentResolver(AuthUser 객체 생성/ request.getAttribute) - Controller로의 전달 과정이 필요하다.
(4) JwtFilter 생성 extends OncePerRequestFilter
: OncePerRequestFilter에서 doFilterInternal을 리팩토링한다.
implements Filter는 여러번 호출되거나 하는 등의 문제가 있다. 이를 해결하기 위해 스프링에서는 OncePerRequestFilter를 지원한다. OncePerRequestFilter는 이미 Filter interface를 implements한 구현체 클래스이므로, extends를 한다는 것이 조금 다를 뿐, 나머지는 동일한 방법으로 사용!
: JWT에 있는 유저 데이터 추출 작업(httpRequest.setAttribute)을 진행한다.
(5) FilterConfig로 JwtFilter등록
(6) ArgumentResolver 생성
: JWT에서 추출한 데이터(request.getAttribute)로 AuthUser 객체를 만든다. 비로서 Controller에 전달할 수 있는 데이터가 생성된다.
(7) WebConfig로 ArgumentResolver 등록
(8) AuthUser(dto) 클래스와 Auth(어노테이션) 인터페이스 생성
(9) Controller에서 ArgumentResolver를 통해 JWT의 유저 정보를 전달 받는다.
: @Auth AuthUser authUser
'개발 > 부트캠프' 카테고리의 다른 글
본캠프 : 개인 과제(플러스 심화) 트러블 슈팅 (0) | 2025.03.20 |
---|---|
본캠프 : JWT Stateless Spring Security (0) | 2025.03.17 |
본캠프 : QueryDSL (0) | 2025.03.13 |
본캠프 : 테이블 객체끼리 관계만들기 2 (0) | 2025.03.12 |
본캠프 : 테이블 객체끼리 관계만들기 1 (0) | 2025.03.12 |