정답은 사실 없다. 어디서든 기능을 구현하면 되기 때문이다. 하지만 좀 더 정확하게 구분지어 사용을 하고 싶은 사람들도 있을 것이다. 그래서 이 고민의 결과를 여기다 적어두려고 한다.
우선 filter와 interceptor, aop의 흐름을 보면 결국 controller에 오기 전에 실행되므로 어디서 실행해도 상관은 없어 보인다. 하지만 filter가 servlet 이전에 실행되고 interceptor와 aop는 servlet 이후에 spring 영역에서 돌고 있음을 확인할 수 있다.
그래서 여러 글들을 참고하고 내가 내린 결론은
인증
은 filter에서권한 체크
는 interceptor에서로 결론을 내렸다.
그 이유는 인증 자체가 안된 회원을 filter에서 미리 걸러내기 때문에 서버에서 더이상 돌아갈 일이 없어지게 하고 인증이 된 유저의 경우 권한에 대해 확인할 때는 interceptor에서 미리 확인해볼 수 있기 때문이다. 물론 filter를 체인 걸어서 한다던지 interceptor에서 order를 따라 순차적으로 확인한다던지 여러 구현 방법이 존재하겠지만 좀더 구분을 지어서 활용한다면 난 다음과 같은 활용이 맞을거 같다 생각이 들었다.
인증
은 filter에서 권한 체크
는 interceptor에서