Develop

뭔가 재미있었던 Spring Security 가지고 놀기

D_Helloper 2024. 4. 22. 21:38

회사에서 일을 하다가 받았던 재미있는 것 하나를 적고자 한다.

유저가 url을 통해서 특정 페이지에 접근한다고 했을 때,

GET요청으로 던져진 인자들을 Spring Security의 Filter에서 가져다가 인증 절차를 거치고 뒷 로직을 태우는 작업이었다.

 

먼저 Filter에서 URL을 통해 들어오는 파라미터들 중 필요한 것을 HttpRequest에서 꺼낸 후, 인증 절차를 진행했다.

토큰 비스무리한 것을 사용하는 거였는데, 이건 그냥 유저 인증 절차랑 같다고 보면 된다.

 

인증이 통과되면 해당 화면을 조회할 수 있도록 SuccessHandler에서 Redirect 시켜주고, 만약 인증이 실패했다면, 해당 실패 이유에 따른 에러 페이지를 호출해야 했다.

 

나는 따로 페이지를 여러개 두지 않고 한 페이지에서 메세지만 갈아끼워 주는 걸로 로직을 정했다.그래서 화면단에 에러 메세지를 바꿔서 사용할 수 있도록 변수로 선언해주고, FailureHandler에서 HttpRequest에 에러 유형을 담아서 에러 페이지로 Redirect 해주는 Controller를 호출하고, 에러 유형에 따라 URL 뒤에 인자를 더해서 화면으로 이동했다.

 

에러 페이지까지 넘어오고 나서, URL에 있는 에러 유형을 파싱해서 그에 해당하는 메세지를 화면에 뿌려주는 것으로 마무리 했다.

 

결과는 성공했다.

적고 나니까 별 내용은 없긴 한데.. 왜 재미있었지?

그냥 Spring Security의 동작 흐름에 데이터를 둥실 둥실 태워 보내는 느낌이어서 재미있었나보다.

Spring Security를 처음 써봐서 그런가는 모르겠지만 기록에 의의를 두는 걸로 한다.