커스텀 필터 관련 질문드립니다.

미해결질문
Hafthor Wheels 프로필

안녕하세요 백기선 강사님, 훌륭한 강의 감사합니다! 예전에 완강했던 스프링 시큐리티 강의를 복습하며 인증을 만드는 중에 궁금한것이 있어 문의드립니다. 강의내용과는 직접적인 관계가 없는 질문을 드리는 점 죄송합니다.

 jwt 토큰을 인증하는 필터를 따로 구현했는데요, 만약 프론트에서 제출한 access token이 만료되지 않았을 경우 jwt 인증 필터에서 response에 갱신된 토큰을 만들어서 넣어주고 싶습니다. 

단순히 커스텀  jwt 필터에서 response.getWriter() 로 넣어주거나 response.setHeader(key, value)로 넣어주니 프론트에서 받은 response의 header에선 아무리해도 찾을 수가 없었습니다. 여기서 제가 궁금한 것은

1. 이렇게 하는 것이 올바른 방법일까요? 토큰 갱신 로직을 필터에서 넣어줘야하는지, 아니면 aop 같은걸 사용하여 모든 api 의 response header에 넣어줘야 하는 것인지.. 아니면 따로 토큰을 재발급해주는 api를 만들어 보통의 api 호출 후 바로 불러서 갱신해야할지 감이 안잡힙니다. 이 경우 일반적인 접근방법은 무엇인지 궁금합니다..!

2. 만약 이렇게 하는 것이 괜찮은 방법 중 하나라면, response에 어떻게 추가하는 것이 좋을까요? http://tutorials.jenkov.com/java-servlets/httpresponse.html#headers 에 따르면 header는 모든 데이터가 쓰이기 전에 입력되어야 한다고 하는데, 그 시점을 찾아서 어떻게든 추가하는것이 맞을까요?

백기선 프로필
백기선 4달 전

스프링 시큐리티 인증 필터로 구현하시는게 맞는거 같구요. 헤더에 넣어줬는데 찾을 수 없다는 부분이 조금 의아하네요. 스프링 시큐리티가 제공하는 인증 필터 중에도 응답 헤더에 세션 아이디를 설정하는 필터가 있을텐데 분명 그 필터로 헤더에 값을 설정할 수 있을 겁니다.

Hafthor Wheels 프로필
Hafthor Wheels 4달 전

답변 정말 감사합니다 :) 혹시 다른분들께도 도움이 될까 하여 적어보겠습니다.

제가 setHeader가 안된다고 한 이유는 프론트에서 요청을 보내고 response의 header에 제가 추가한 것이 나오지 않아서인데요, 기선님 답변을 보고 postman으로 다시 확인해보니 정상적으로 오는걸 확인했습니다. 구글링을 조금 해보니 니 https://stackoverflow.com/questions/37897523/axios-get-access-to-response-header-fields 에서 말한것 처럼 corsConfig에 exposeHeader 옵션을 추가해주지 않아서 생긴 문제였어요. 

좋은하루 되세요 ~!

지식공유자 되기
많은 사람들에게 배움의 기회를 주고,
경제적 보상을 받아보세요.
지식공유참여
기업 교육을 위한 인프런
“인프런 비즈니스” 를 통해 모든 팀원이 인프런의 강의들을
자유롭게 학습하는 환경을 제공하세요.
인프런 비즈니스