2017-01-10 14 views
3

Ich habe Probleme, den derzeit authentifizierten Benutzer in Laravel 5.3 zu greifen. Genauer gesagt, mache ich eine HTTP-Anfrage an meine API-Datei, die die Route als api/test/create definiert hat.Laravel 5.3 Authentifizierungsproblem

Der Controller-Code:

<?php 

namespace App\Http\Controllers; 

use Illuminate\Http\Request; 
use App\Test; 

class TestController extends Controller 
{ 
    public function store(Request $request) { 
     $this->validate($request, [ 
      'test_name' => 'required', 
      'youtube_id' => 'required', 
      'is_live_test' => 'required', 
     ]); 

     //Laravel 5.3 allows to get the user via request 
     $user = $request->user; 

     if($user) { 
      return 'We are logged in'; 
     } else { 
      return 'We are not logged in'; 
     } 

     return '';  
    } 
} 

Jedes Mal, es gibt 'Wir sind nicht angemeldet'. Um dies zu testen, habe ich {{Auth :: check()}} in meiner Blade-Datei referenziert, und das Ergebnis ist '1'. Ich bin mir nicht ganz sicher, warum der Controller nicht erkennt, dass der Benutzer angemeldet ist. irgendwelche Ideen?

Ich habe verschiedene Varianten der Referenzierung der Authentifizierung versucht, einschließlich des Importierens der Fassade und Auth :: check(), Auth :: user(), aber es bringt das gleiche Ergebnis unabhängig.

+1

seine '$ request-> Benutzer()' und die Sie brauchen, um die Strecke zu stellen sicher, die 'auth' verwendet Middleware – Derek

+0

Sollten die API-Routen die Auth-Middleware angewendet haben, obwohl? Oder gehört mein Aufruf in diesem Fall nicht zur API? – mdobrenko

+1

die 'api' Middleware sollte' auth: api' – Derek

Antwort

3

Get Benutzerobjekt mit:

$user = $request->user(); 

Oder:

$user = auth()->user(); 
+0

Danke für den Kopf - aber immer noch "nicht eingeloggt". – mdobrenko

+0

Bitte zeigen Sie den Dateiinhalt der Route an. Auch welche Routen Datei verwendest du? –

3

können Sie verwenden:

Auth::user(); 

auch

auth()->user(); 

auch

$request->user(); 
1

Sie können Auth :: check() Methode direkt im Controller verwenden.

if (Auth::check()){ 
    // User is logged in 
    // Do something with the Authenticated User. 
}else 
{ 
    // User is not logged in 
} 

zu Benutzerdaten tun so etwas wie dieses

$user = Auth::user(); 

$userId = $user->id; 

usw.