위 사이트는 현재 작업하고 있는 컨텐츠 맞춤 스크랩 서비스 다담다 사이트이다.
현재 스크랩을 저장하는 기능은 구현되어 있고, 스크랩을 보드에 담아서 공유하는 기능을 추가 구현하고 있다.
먼저 설계 조건을 파악해보자.
설계 조건
1. 보드는 공개가 기본이며 원한다면 비공개할 수 있다.
2. 비공개 보드에 접근하려고 한다면 토큰을 확인해 본인이면 입장시켜주고 타인이라면 권한이 없다는 문구를 보여준다. 만약 로그인되어 있는 상태가 아니라면 로그인 페이지를 띄워준다. 로그인하면 다시 판단한다.
3. 보드 비공개 상태에서 링크 공유를 하게 된다면 타인도 읽기 모드로 접근할 수 있다.
4. 작성자 본인은 편집 모드로 작업할 수 있다.
먼저 기본적인 보드 url 형식은 "~/boards/{boardUUID}" 이다.
보드를 공개했을 때는 그냥 해당 url을 공유하고 본인인지 확인하고 본인이라면 편집 모드를 들어갈 수 있도록 하면 된다.
URL을 그대로 사용하기 위해서는 아래 3가지 속성을 확인해 사용해야 한다.
- 공개 여부(published)
- 비공개 시, 공유 여부(shared)
- 본인 여부
공개 여부 Y => 접속 가능하고, 작성자면 편집 모드로 진입 가능
공개 여부 N, 공유 여부 N => 본인만 접근 가능
공개 여부 N, 공유 여부 Y => URL이 있다면 접속 가능하고, 작성자만 편집 모드 진입 가능
하지만 여전히 문제가 발생한다. 한번 url을 공유하면 후에 보드 UUID를 바꾸지 않는 이상, 다음에 공유 여부를 Y로 바꿨을 때 외부인이 전에 받았던 url을 갖고 있다가 다시 접속할 수 있게 된다.
어떻게 설계하면 원하는 사용자만 들어올 수 있게 할 수 있을까?
원래 UUID는 작성자가 아니면 접근할 수 없게 하고, 읽기 전용 URL을 만드는 것이 어떨까?
"~/boards/{boardUUID}" 는 본인이 아니면 전부 접근을 제한해두고, "~/boards/{readOnlyBoardUUID}"는 전부 접근이 가능하도록.
하지만 readOnlyBoardUUID는 공개, 공유를 다시 할 때마다 갱신되도록 하면 내가 원하는 사람들만 확인할 수 있도록 할 수 있지 않을까?
'정기간행물 > daily' 카테고리의 다른 글
분산 서버 구축 이후 로그인 이슈 (다담다) (0) | 2023.10.15 |
---|---|
Spring Session (0) | 2023.10.14 |
한빛N MSA - #5 Re-Search (1) | 2023.10.12 |
Observer 패턴 (0) | 2023.10.10 |
구글 드라이브 설계 (대시설기) (0) | 2023.10.09 |