- TIL -
구현 목표)
사용자가 Token 을 가지고 API 의 엔드포인트에 접근했을때 Security 에서 JWTUtil 클래스를 거쳐 유저가 정상적인 토큰을 가지고 있는지 검증한 뒤 해당 Token 의 값을 기준으로 User 의 정보를 가져와 다른 클래스에서 필요할때 사용하고자 하였다.
문제 발생)
Token 에서 유저의 정보를 가져오는 방법으로는
1) payload 값에 유저에 대한 정보를 모두 넣어 서버에서 디코딩하여 확인하는 방법
2) SecurityContextHolder 에서 검증된 유저의 email 정보를 가지고 DB 를 한번 훑어서 유저의 정보를 가져오는 방법
위 두가지 방법이 존재하는 것으로 파악하였다, 위 두 가지 방법 중 나는 후자를 선택하여 구현하고자 하였는데 이유로는 사용자의 Local Strage 의 Token 정보가 항상 동기화 되어있지 않을 수 있다는 문제점이 있기 때문에 확실하게 DB 를 한번 거쳐서 동기화된 사용자의 정보를 출력하여 사용하고자 하였다.
또한 전자로 구현하는 경우 Token 정보를 받아서 처리해야 하기 때문에 HttpServletRequest 객체를 매개변수로 매번 넘겨야하는 번거로움이 있는 반면 후자로 구현하고자 하면 매개변수를 넘기지 않고도 Spring Security 에서 인증된 사용자에 대한 객체 정보를 저장하고 있는 SecurityContext 를 활용하여 유저에 대한 정보를 확인할 수 있기 때문에 코드가 간결해진다는 장점이 있다...!!
문제 해결)
1) payload 의 값을 기준으로 유저에 대한 정보를 확인하는 코드
2) SecurityContextHolder 를 활용하여 User 정보를 불러온 코드
'TIL' 카테고리의 다른 글
[TIL] 2024.10.07 - [Spring Security] JWT 내부 Role 값을 확인하여 권한 처리하기 (1) | 2024.10.07 |
---|---|
[TIL] 2024.10.04 - [Spring Security] json 데이터로 로그인 처리하기 (1) | 2024.10.04 |
[TIL] 2024.09.30 - User 는 왜 예약어세요...? (2) | 2024.09.30 |
[TIL] 2024.09.29 - Spring Security 경로별 인가 설정 (3) | 2024.09.29 |