2017-11-07 1 views
0

Ich erwarte ein JWT Token aus allen eingehenden Anfrage, und es sollte wie auf Anfrage-Header enthalten sein: Authorization => 'Bareer: some token hereAnfahrt Bearer-Token aus einer Anfrage in Laravel

Ich möchte dieses Token bekommen und überprüfen es: hier ist, was ich versuche:

$token = $request->header('Authorization'); 

und das ist, was ich bekommen:

"Authorization: Bearer: eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJpc3MiOiJleGFtcGxlLm9yZyIsImF1ZCI6ImV4YW1wbGUuY29tIiwiaWF0IjoxMzU2OTk5NTI0LCJuYmYiOjEzNTcwMDAwMDB9.UQUJV7KmNWPiwiVFAqr4Kx6O6yd69lfbtyWF8qa8iMN2dpZZ1t6xaF8HUmY46y9pZN76f5UMGA0p_CMqymRdYfNiKsiTd2V_3Qpt9LObaLg6rq18j3GLHfdr8nyBzO3v7gTpmNaU6Xy47aMDsbcs593Lx_lD3PnO41oEHgih7CsRKW1WcW1radnpEhdDO7-GpmGOF6xUnpAlQ9EHqpqnIlZPbVoJg92Iwozn-07uuWrkyKUpYN4IPpstd1ks3cKlJ6FH-2ROiC4N0MVLxp4lhUyKhLdwgDWYH4tjtdrEVK0a3_zVtK1ukvriEJqMkfYHnE6Bwv_pv_-lRNy_y7m-YQ" 

Frage ist es eine Möglichkeit, das nur das Token nicht "Authorization: Bearer" zu greifen und natürlich könnte ich die ganze Zeichenfolge analysieren und das Token bekommen, aber ich frage mich, ob es eine andere Möglichkeit gibt, es ohne Parsing zu bekommen.

+0

Verwenden Sie dafür https://github.com/tymondesigns/jwt-auth? –

+0

Laravel hat keine integrierte Methode, um dies für Sie zu bekommen, aber es gibt viele Pakete, die Sie verwenden können, wenn Sie die Zeichenfolge nicht selbst analysieren wollen (natürlich, wenn Sie ein Paket verwenden, ist es nicht, weil Sie nicht möchte einen String analysieren, aber weil er auch andere Funktionen hat, die Sie benötigen). – apokryfos

+0

@MatthewDaly nein Ich benutze das Paket nicht, da ich aus irgendwelchen Gründen nicht mit der rs256-Verschlüsselung arbeiten kann. Ich benutze Firebase, um Tokens mit öffentlichen/privaten Schlüsseln zu signieren und zu verifizieren –

Antwort

0

Nun können Sie substr() PHP-Funktion verwenden, um nur das Token zu erhalten.

$string = "Authorization: Bearer: eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJpc3MiOiJleGFtcGxlLm9yZyIsImF1ZCI6ImV4YW1wbGUuY29tIiwiaWF0IjoxMzU2OTk5NTI0LCJuYmYiOjEzNTcwMDAwMDB9.UQUJV7KmNWPiwiVFAqr4Kx6O6yd69lfbtyWF8qa8iMN2dpZZ1t6xaF8HUmY46y9pZN76f5UMGA0p_CMqymRdYfNiKsiTd2V_3Qpt9LObaLg6rq18j3GLHfdr8nyBzO3v7gTpmNaU6Xy47aMDsbcs593Lx_lD3PnO41oEHgih7CsRKW1WcW1radnpEhdDO7-GpmGOF6xUnpAlQ9EHqpqnIlZPbVoJg92Iwozn-07uuWrkyKUpYN4IPpstd1ks3cKlJ6FH-2ROiC4N0MVLxp4lhUyKhLdwgDWYH4tjtdrEVK0a3_zVtK1ukvriEJqMkfYHnE6Bwv_pv_-lRNy_y7m-YQ"; 

$token = substr($string, 23);

echo $token;

+0

hmm Ich habe erwähnt, dass ich die Antwort nicht analysieren will ... –

0

Sie können wie etwas tun:

$response = explode(':', $request->header('Authorization')); 
$token = trim($response[2]); 
0

wenn Sie Auth verwenden: api tun müssen, nicht gesetzt Wache Namen 'api'

\Auth::guard('api')->getTokenForRequest(); 
1

Es gibt eine bearerToken() Methode auf dem Illuminate\Http\Request Objekt, also sollten Sie in der Lage sein, einfach $token = $request->bearerToken(); zu tun und zurück zu bekommen, was Sie erwarten (das ist in Laravel 5.5 - ich bin nicht sicher von früheren Versionen).

+0

das wäre toll, wenn es wirklich existiert –

+0

Es existiert. [Träger-Token anfordern] (https://laravel.com/api/5.5/Illuminate/Http/Request.html#method_bearerToken) – Isaiahiroko