Today I did
Spring Security 설정을 stateful에서 stateless로 변경하였다.
Why I did
sateful은 session을 유지하기 때문에, 한번 authentication을 session에 저장하면 jwt가 없어도 인증이 된다.
What I learned
stateless는 session을 사용하지 않음을 알았다. stateless 설정을 하면 서버에 요청이 들어올 때마다 session을 reset한다. 따라서, session에 authentication을 저장해도, 새로운 요청이 들어오면 session은 reset되서 비어있다.
Today My Hurdle
기존 코드에서는, jwt에 들어있는 유저정보는 email뿐이라서, email 정보를 통해 db에 접근해서 id를 가지고 email과 함께 authentication을 만들었다. 하지만 매번 authentication을 만들 때마다 db에 접근하는게 부담스러웠다. 해결방안으로, stateful으로 설정을 변경하였다. 한번만 db에 접근해서 필요한 정보를 가지고 authentication을 만들어서 session에 저장만 해놓으면, 이후 요청에는 db에 접근하지 않아도 session에 저장되어 있는 authentication을 사용하면 된다고 생각했다. 하지만, session이 남아있으면 jwt가 틀리거나 없어도 유저정보를 가지고 올 수 있는 문제가 생겼다.
Today I solved
stateless 설정을 통해 session이 유지되지 않도록 했다. session이 유지가 되면, jwt가 틀리거나 없어도 유저 정보를 가지고 올 수 있는 문제가 발생한다.
URL
reference url
https://www.inflearn.com/questions/34886
Git Commit url
https://github.com/lovelyAlien/dotjoin/commit/85bd7890b32fee19244267f5504fd83c48dd3b9c
https://github.com/lovelyAlien/dotjoin/commit/f23327776ea50df08ac24632a7bd0b828a3c623c