두 부분으로 구성된 토큰을 사용할 수 있습니다. 하나는 클라이언트와 서버간에 공유하고 다른 하나는 외부 매개 변수를 기반으로합니다.
도 업데이트입니다.
예를 들어, 클라이언트와 서버가 t
이라는 숫자 토큰을 공유하고 첫 번째 호출 (로그인, 사용자 작성, 원하는대로) 중에 해당 토큰에 동의한다고 가정 해보십시오.
토큰을 만들 때 카운터 c
을 0
으로 설정하고 현재 토큰 (또는 더 좋게 마지막으로 표시됨) 인 p = <t, c>
쌍을 만듭니다.
모든 요청에서 명시 적으로 토큰이나 카운터를 보내면 안됩니다. 클라이언트가 서버에 메시지를 보내려고
, 단계는 다음과 같습니다
- 생성 된 토큰
v
사용하여 요청을 보내기
<t,c+1>
- 로 새로운 값
v = t*c
- 업데이트
p
만들기
각 요청에는 고유 한 실제 토큰이 있습니다.
서버에 토큰을 확인하기 위해 단계는 :
- 계산 수락 토큰
aN
의 집합은 다음과 같이
a0 = v*(c-N/2)
(c' = (c-N/2)
)
a1 = v*(c-N/2+1)
- ...
aN = v*(c+N/2-1)
- 수신 토큰과 동일
aM
가 존재하지 않으면, 요청이 접수 된 경우, 상기 요청
- 을 수락
c'
가 선택을 만드는 데 사용되는 경우, 그에 따라 카운터 서버 측 갱신 aM
현재 c
이 방법보다 더 큰, 동시 요청이 잘 처리하고 명시 적으로 토큰을 갱신 할 필요가 없습니다.
요청이 실패 할 때마다 클라이언트는 공유 토큰 t
과 카운터 c
을 어떻게 든 전용 끝점으로 재설정할지 결정할 수 있습니다.
서버는 계산 된 집합에 유효한 aM
이없는 요청을 거부 할 수 있습니다.
물론 토큰을 어떻게 든 어딘가에 저장할 수 있어야합니다.
답변 해 주셔서 감사합니다. – patentul
@patentul 오신 것을 환영합니다. 그것이 당신의 필요에 맞는 것인지 알려주세요. 또한 반드시 솔루션으로 nodej에 바인딩되는 것은 아닙니다. – skypjack