[ 절레절레 짓 ]
서버에 세션이라는 영역이 있긴한데 이제 쓰질 않는다. 이제는 클라이언트가 로그인을 하면 JWT를 들고있게 된다. 이 토큰을 가지고 인증이 필요한 주소 요청(USER정보 같은..)을 서버에 하게 되면, 서버에 요청을 할 때마다 이 JWT 토큰을 HTTP 요청의 헤더에 포함시켜서 서버에 보낸다. 그럼 서버가 JWT를 받고 검증을 하면 아, 애 인증받은 애 맞네? 유효한 요청이네? 하고 정보를 돌려주면 되는데 이 검증을 인터셉터 preHandle에서 할거임
preHandle 메소드는 컨트롤러가 실행되기 전에 호출되므로,
요청의 인증을 처리하는 데 적합
return false면 검증이 안됐다는 말
JWT는 세션을 사용하지 않기 때문에, 매번 서버로 요청을 보낼 때마다 JWT를 통해 사용자를 인증해야 한다. 즉, JWT를 사용할 때는 매 요청마다 토큰의 유효성을 검증해야 하고, 필요한 정보를 토큰에서 추출해야 하는 번거로움이 있다. (검증 2번 해야함. 이건... 미친짓이다...) 택배 회사에서 택배가 왔어 이 택배 안에 자물쇠 10번 열어서 꺼내서, 물건이 제대로 왔는지 봤어. 안에 정보가 잘 있는 걸 확인하고, 다시.. 택배를 또 감싸서 줌. 실제로 사용하는 애는 또.. 또다시 자물쇠 10번 열어서 꺼내야 한다는 것임...
[ 그럼 어떻게 해야 할까? ]
택배를 처음 받은 애가 안에 있는 정보를 담아서 세션에 담아놓으면 편하다. 즉, 요청 처리 중에 임시로 세션을 사용하여 필요한 정보를 저장하고 접근하는 방법 사용! 꺼낼때는 세션에서 꺼내면 된다. (요청할 때마다 임시로 만들어지는 stateless 세션 사용!)
즉, 이제 헬스장에서 락카가 아니라 티켓을 줌. 님은 2024.09까지 헬스장을 사용할 수 있음. 하는 거임 그럼 나는 락카 키(JsessionId)를 들고 가는게 아니라 티켓을 들고가는 거임 그 티켓을 검증하고, 티켓에 있는 내용을 락카에 '잠깐' 담아주는 것. 티켓에 필요한 정보를 담아놓고 필요할 때마다 락카에서 꺼내서 쓰면 됨. (놀이공원 사물함 같은 것임.) (집에 갈 때마다 락카키를 들고 가면 세션 기반) 세션을 stateful로 쓰는게 아니다. 세션을 임시로 쓰면 stateless임. 놀러올 때마다 락카 빌려주고, 집에갈 때 버려버리고.. 세션은 계속 재사용 매 요청마다 새로운 "임시" 세션을 만들어 그 안에 사용자 정보를 저장, 사용자가 시스템을 이용하는 동안에만 이 정보를 유지하고, 사용자가 "집에 갈 때" 즉, 세션을 종료할 때까지만 정보가 유지된다. 이후 정보는 사라지기 때문에, 다음 방문 때는 다시 티켓(JWT)을 제시하면 됨
request는 위험해서 session에 넣음
Share article