2016-08-30 3 views
0

Ich verwende derzeit Slim mit Slim-JWT-Auth.Wie erkennt man den Benutzer bei der Verwendung eines JWT-Tokens (Slim-JWT-Auth)

Mein Projekt basiert auf dem Slim-Api-Skelett (https://github.com/tuupola/slim-api-skeleton). Ich muss eine Route nur für den Benutzer zulassen, der das Token erstellt hat.

Ich habe es mit dem folgenden Code getan:

 //check if it is the right user 
     $user = \User::find($args["uid"]); 

     $token = $request->getHeader('HTTP_AUTHORIZATION');     
     $token = str_replace("Bearer ", "", $token); 
     $secret = getenv("JWT_SECRET"); 
     $decoded = JWT::decode($token[0], $secret, array("HS256")); 

     if ($decoded->sub != $user->email) 
     { 
      throw new ForbiddenException("User not allowed to read."); 
     } 

Ist es richtig? oder gibt es einen besseren Weg?

Antwort

0

Das ist eine Möglichkeit, es zu tun. Obwohl ich das Token nicht manuell analysieren würde. Standardmäßig werden die analysierten Werte von JWT im $request->token Attribut gespeichert. Damit können Sie Ihren Code auf folgende Weise verkürzen.

Sie können dieses Verhalten mithilfe der Einstellung attribute ändern.

+0

Danke ... es funktioniert. Ich habe gerade den Weg geändert, um das Token zu bekommen, weil die direkte Verwendung von $ request-> token-> sub für mich nicht funktioniert. Also habe ich den folgenden Weg verwendet: $ Token = $ Anfrage-> GetAttribute ("Token"); if ($ token-> sub! == $ user-> email) ... – kip

Verwandte Themen