2017-09-24 6 views
0

Ich möchte in der Lage sein, das Token aus dem http_request_body aus ärgerlichen Gründen abrufen, wo ich die Daten senden muss, das Token ist zu lang, um als Teil der Abfragezeichenfolge zu senden, und sie akzeptieren keine Header zu senden.Laravel jwt.auth Abrufen Token von Body

Wie dem auch sei, ich habe es geschafft, die jwt.auth GetUserFromToken Middleware an folgende bearbeiten:

if (! $token = $this->auth->setRequest($request)->getToken()) { 
    if(! $token = $request->get('token')) { 
     return $this->respond('tymon.jwt.absent', 'token_not_provided', 400); 
    } 
} 

Dies funktioniert, aber ich frage mich, ob es eine bessere Art und Weise, die mehr dauerhaft sein würde? Offensichtlich, wenn ich die Bereitstellung oder das Paket aktualisiert, wird dies überfahren werden.

Gibt es eine Möglichkeit zu erweitern, um diese Klasse aus meiner App zu erweitern oder zu überfahren, anstatt direkt in der Middleware des Anbieters?

Danke!

+2

Sie können diesen Link überprüfen, wie die Herstellerroute mit Paket https://stackoverflow.com/questions/28832146/cani-i-use-laravel-5-middleware-to-allow-packages-to- override-app-routes –

+0

Nicht sicher, was das Problem ist, in der Regel, wenn etwas zu lang ist, um als Abfragezeichenfolge senden Sie es per Post, die es im Anfragetext senden würde, aber in diesem Fall $ Anfrage-> bekommen ("token") 'sollte immer noch so funktionieren, als ob das Token in der Abfragezeichenfolge wäre. – apokryfos

+0

@apokryfos denken Sie vermissen verstanden, die Änderung funktioniert, die Frage war wirklich um, wie man die Änderung permanent –

Antwort

0

Mit Hilfe von @Moeen Basra @apokryfos und diese How to override vendor class file?

Managed die Middleware zu erweitern, so dass es die bestehende Klasse überschreibt und wird nicht beeinträchtigt werden, wenn die Anwendung bereitgestellt wird, oder das Paket aktualisiert.

Added MyGetUserFromToken.php

namespace App\Overrides\Tymon; 

use Tymon\JWTAuth\Middleware\GetUserFromToken; 

class MyGetUserFromToken extends GetUserFromToken { 

Und dann im Kernel

//use Tymon\JWTAuth\Middleware\GetUserFromToken; 
use App\Overrides\Tymon\MyGetUserFromToken; 

... 

'jwt.auth' => MyGetUserFromToken::class, 

Hoffentlich wird dies dann auch anderen helfen.