2016-07-23 3 views
0

사용자 인증 용 앱이 있는데 로그인 한 사용자가 있고 쿠키에 JWT (JsonWebToken)가 저장되어있는이 문제가 발생했습니다. 사용자를 확인한 후에 쿠키를 저장했습니다. 그런 다음 관리자로 로그인 한 상태에서 데이터베이스에서 해당 사용자를 제거합니다. 이후 사용자는 계속 로그되며 사용자는 브라우저에 유효한 JWT가 있으므로 여전히 존재한다고 생각합니다. 사용자가 웹 로그인을 통해 로그인 한 경우 유효성을 검사합니다. 나는 이것을 고치는 방법에 대해 생각해 왔지만 나는 아직 무엇인가를 생각해 낼 수 있었다.JsonWebToken 사용자 인증 문제

또한이 문제는 GitHub에 게시했습니다.

답변

0

쿠키의 만료 시간을 이미 통과 한 날짜로 설정하여 쿠키를 만료시키는 것도 한 가지 방법입니다. 계정 삭제/차단/정지, 비밀번호 :

+0

1 시간 내에 사용자를 삭제할 수 있지만 사용자가 23 시간 동안 로그인하지 않으면 어떻게됩니까? – Pete

+0

정확히 어떻게 알지는 못하지만 사용자를 삭제할 때 쿠키의 만료 시간을 수정하십시오. –

1

것은 Invalidating JSON Web Tokens

이 사용자의 상황이 변경되면 만료 전에 JWT 토큰을 무효화하기 위해 몇 가지 기술은 당신이 로컬 스토리지/쿠키에서 제거 할 수 없습니다를 살펴 보자 변경 권한이 변경, 사용자는 관리자에 의해 로그 아웃 :

  1. 토큰 블랙리스트 : 로그 아웃 사이 & 만료 시간이었다 스토어 토큰을, 마크가 만료 모든 요청을 확인합니다. 서버 저장 영역이 필요합니다. ID 만 포함하거나 발급 된 시간 필드를 사용할 수 있습니다. 사용자의 최종 업데이트 전에 발행 된 토큰이 유효하지 않습니다.

  2. 만료 시간이 짧음 회전합니다. 요청이 많을 때마다 새로운 것을 발행하십시오. 계정이 새 사용자 & 암호를 손상되면

    • 변화 사용자 고유 ID를 허용 : 문제는 어떤 요청 (예를 폐쇄 브라우저)가없는 경우 로그인 한 사용자를 유지

다른 일반적인 기술입니다 로그인

  • 이전 토큰을 제거하려면 마지막 로그인 날짜를 포함하십시오.
  • 사용자가 암호를 변경할 때 토큰을 무효화하려면 암호 해시를 사용하여 토큰에 서명하십시오. 암호가 변경되면 이전 토큰이 자동으로 확인하지 못합니다. 서명 할 다른 관심 분야와 함께이 메커니즘을 확장하십시오. 단점은 데이터베이스에 대한 액세스가 필요하다는 것입니다.