2017-12-18 8 views
1

Ich habe eine Authentifizierungs-Middleware, um die Gültigkeit des übergebenen API-Schlüssels zu überprüfen. Ich hole die Benutzer-ID aus der Datenbank ab und speichere sie in dem Anfrage-Array, so dass die anfordernde Seite die Benutzer-ID erhält.Hinzufügen von Werten zum Anfordern von Array in Laravel Middleware ist eine gute Praxis?

public function handle($request, Closure $next) { 

     $key = $request->get('key'); 

     $user = User::where('token', '=' ,$key)->first(); 

       if($user != null){ 

        $request->request->add(['middlewareUserID' => $user->id]); 
        return $next($request); 
        } 
        else { 
        return response(401); 
        } 
    } 

Ist es eine gute Praxis?

+0

Vielleicht besser in [Code-Review] (https://codereview.stackexchange.com/) geeignet? – FirstOne

Antwort

1

Ich würde sagen, das ist in einem solchen Fall nicht notwendig.

würde ich Code wie folgt verwenden:

use Illuminate\Contracts\Auth\Guard; 

class YourMiddleware 
{ 
    protected $guard; 

    public function __construct(Guard $guard) 
    { 
     $this->guard = $guard; 
    } 

    public function handle($request, Closure $next) { 

     $key = $request->get('key'); 

     $user = User::where('token', '=' ,$key)->first(); 

     if(!$user){ 
      return response(401); 
     } 

     $this->guard->setUser($user); 
     return $next($request); 

    } 
} 

so, wenn es Benutzer für bestimmte Token Sie Benutzer in Zeile $this->guard->setUser($user); authentifizieren kann, und wenn das Token ungültig zurückkehren Sie return response(401);

I don‘ Es ist nicht erforderlich, diese Benutzer-ID so einzurichten, dass sie wie angegeben angefordert wird.

+0

Entschuldigung, was ist das Guard? –

+1

Wie Sie oben sehen, ist dies '\ Illuminate \ Contracts \ Auth \ Guard ', mit dem Sie den Benutzer authentifizieren können. Später können Sie' auth() -> user() 'verwenden, um authentifizierte Benutzer oder auch $ zu erhalten request-> user() ', um die Benutzerinstanz zu erhalten. –

Verwandte Themen