10
31

한개 서버로 여러 서비스 폴더별로 구분하여 관리

파일 시스템 구조

  • 미리보기

서비스 생성

새로운 서비스(앱, 게임 등) 생성 시, GameData, UserData, OtherData 폴더가 함께 생성되도록 하고, UserData 폴더에는 Info.json 파일을 생성하여 신규 유저의 UID 부여에 참고하도록 한다.

{"next_uid": "000000000"}

유저 정보 생성(회원가입)

회원가입을 위해 서비스 이름, 입력ID, 입력Password와 함께 서버에 요청한다.

  1. 서비스가 있는지 확인, 겹치는 유저 ID가 있는지 확인
  2. (입력Password + 16자리의 salt) 를 해시 암호화 한 패스워드를 얻는다
  3. UID의 폴더를 생성하고, Base.json을 작성한다.
    1. uid, id, pass, salt 를 보관한다.

데이터 백업 압축파일 다운로드

백업했던 데이터 업로드하여 복원(덮어쓰기)

게임 데이터 업로드(기존 서버의 게임 데이터를 덮기)

게임 데이터 GET

로그인 기능

  • SERVICE 내 ID PASS 검증.(즉 이 세 요소를 서버에 같이 전송해야함)
  • 토큰발행 후 유저에게 전송, 서버에 보관, (토큰-UID) 쌍이면 괜찮으려나
    • 아까 UserData 폴더 내에 Info.json 파일로 UID 관리했듯이, Token.json 하나 미리 마련해두고 여기에서 동적으로 관리하면 될 것 같다.

로그아웃 기능

  • 클라이언트 앱이 종료되거나, 로그아웃 버튼을 누르면 서버에서 로그아웃 기능 수행. Key값이 해당 계정의 토큰값인 아이템을 삭제하면 되나?
  • 또는 토큰이 추가된 후 일정 시간(24시간?) 지난 게 확인되면 역시 보관된 아이템을 삭제하면 될듯. 만약 삭제된 뒤로 유저가 토큰으로 유저데이터에 접근을 시도할 경우, 클라이언트에 “님 지금 토큰이 보관되어있지 않은 것 같은데 로그인좀 다시 하셈” 이라고 메시지를 보내면 될 것 같다.

유저 데이터 통으로 업데이트

유저 특정 데이터 업데이트

유저 데이터 모두 얻기

유저 특정 데이터 얻기

랭킹 시스템(업로드)

Get 랭크보드(상위 N명)

반응형
COMMENT