모임 권한 처리에 대해서 논하기 전에 이번 프로젝트에 특수한 상황에 대해서 설명하려고 한다.
이 회원들은 여러 모임에 속할 수 있고 각기 다른 모임에서 역할을 가질 수 있다.
1.기본적으로 JWT를 사용해서 사용자 정보와 인증 상태를 유지하지만 JWT의 페이로드에 여러 모임에 대한 정보까지 넣기에는 네트워크 통신비용이 많이 발생할 수 있다.
2.모임에 관리자이거나 회원일 때 많은 역할을 할 수 있진 않다.
모임에 가입했을 경우 바로 모임 내에서 활동이 가능해야한다. 하지만 JWT만료될 때까지 같은 JWT로 들어오면 계속 모임에 가입하지 않은 회원인 상태가 된다.
성능관련 문제도 있다.
JWT 자체의 크기(문자열의 길이)와 그 연산 비용이 있다. 알고리즘 종류와 공개키, 바디에 담긴 데이터, 시그니처 등을 포함하는 JWT는 필연적으로 대부분의 세션 ID보다 길어지게 된다. 거기에 JWT 자체가 유효한 토큰이더라도 결국 해당 토큰의 유효성을 확인하기 위해서는 일련의 계산 과정(디코딩, 해싱)이 필요하며 이는 필연적으로 세션 ID보다 더 많은 자원을 소모하게 된다.
JWT를 세션 용도로 사용하지 않는 편이 바람직하다는 것이다.보안적인 측면에서 볼 때 좀 더 오래 사용되고 검증된 세션을 활용하는 편이 좋을 것이다.
쿠키 : 쿠키에 데이터(모임과 모임에서의 역할)를 담아서 사용하다가 민감한 요청이 올 경우에는
한번 더 검증해서 사용하려고 한다.
캐싱: 레디스에 데이터(모임과 모임에서 역할)을 캐시처리 하는 방법까지 고려해보자!