저는 Laravel과 JWT-auth를 처음 사용했습니다. JWT 토큰을 생성하고 백엔드에서 관련 사용자를 얻는 프로세스를 구현했지만 서버가 클라이언트 측에 저장된 토큰에서 사용자의 인증을 검증하는 방법을 여전히 이해할 수는 없습니다.Laravel/Lumen은 JWT를 통해 사용자의 인증을 어떻게 확인합니까?
컴퓨터 A에 로그인하고 컴퓨터 B에서 암호를 변경 한 경우 이전 토큰으로 컴퓨터 A에서 계속 로그인 할 수 있습니까?
저는 Laravel과 JWT-auth를 처음 사용했습니다. JWT 토큰을 생성하고 백엔드에서 관련 사용자를 얻는 프로세스를 구현했지만 서버가 클라이언트 측에 저장된 토큰에서 사용자의 인증을 검증하는 방법을 여전히 이해할 수는 없습니다.Laravel/Lumen은 JWT를 통해 사용자의 인증을 어떻게 확인합니까?
컴퓨터 A에 로그인하고 컴퓨터 B에서 암호를 변경 한 경우 이전 토큰으로 컴퓨터 A에서 계속 로그인 할 수 있습니까?
'사용자'테이블과 일반적으로 '세션'과 같은 다른 테이블이 있습니다. 사용자가 API를 통해 로그인을 요청하면 '세션'테이블에 새로운 행이 삽입되고 (토큰이 저장 됨) API가 토큰을 사용자에게 반환합니다. 인증이 필요한 모든 요청의 경우 사용자는이 토큰을 (예 : HTTP 헤더를 통해) 제공해야합니다.
요청시 사용자를 인증하려면 토큰이 존재하고 유효한지 확인한 다음 사용자를 검색해야합니다. 루멘의 예 :
$this->app['auth']->viaRequest('api', function ($request) {
$session = Session::where(['token' => $request->header('token')])->get(); //user gives his token in the header request
if($session){
return $session->user(); //you have setup the hasOne/hasMany relationship between sessions and users
//the user is authenticated
}
return null;
// the user is not authenticated
});
"나는 시스템 A에 로그인 기계 B에 암호를 변경하는 경우, 나는 아직도 이전의 토큰 시스템 A에서 로그인 할 수 있습니까?" 토큰이 여전히 유효하고 여러 활성 세션을 허용하는 경우 예. 토큰은 암호에 따라 설정되지 않습니다.
. 토큰은 패스워드가 아니라 사용자에게 직접 연결되므로 JWT 제공 업체의 재량에 따라 패스워드 변경을 처리 할 수 있습니다. – apokryfos
@apokryfos 답장을 보내 주셔서 감사합니다. 그건 나에게 의미가있다. JWT 공급자를 말하면 jwt-auth 플러그인이나 백엔드 개발자 자신을 의미합니까? 어쨌든, 좋은 실행 방법에 대한 힌트를 줄 수 있습니까? – yifei3212
이 경우 JWT 공급자는 응용 프로그램이므로 기본적으로 사용자가 암호를 변경할 때마다 사용자와 관련된 모든 토큰을 무효로 설정할 수 있습니다 ([Observers] (https://laravel.com/docs/5.5)./eloquent # observers) 도움이됩니다. – apokryfos