2017-03-05 2 views
1

Hey ich lerne Laravel V5.2 und arbeiten an Benutzerauthentifizierungssystem und einige Überprüfung mit Benutzer modal zu überprüfen, ist Login-Benutzer ist admin oder nicht. Aber wenn ich bin versuchen, Login-Benutzer durch Verwendung von Auth :: user() Ich bekomme leere Wert im Gegenzug.Aufruf an eine Member-Funktion isAdmin() auf Null

use App\User; 

Route::get('/', function() { 

    $user = Auth::user(); 

    // $user = User::find(1); 

    if($user->isAdmin()){ 
     return "Admin"; 
    } 

    return "Normal User"; 

    }); 

    Route::get('/access',['middleware'=>'role',function(){ 
    return "This is middleware"; 
    }]); 


Route::group(['middleware' => ['web']], function() { 

    Route::auth(); 
    Route::get('/home', '[email protected]'); 

}); 

Antwort

0

Das ist, weil die web Middleware ist nicht auf, dass bestimmte Strecke laufen. Diese Middleware ist diejenige, die dafür zuständig ist, die gesamte Authentifizierung zusammen mit der Sitzungserstellung festzulegen. Daher erhalten Sie keinen authentifizierten Benutzer auf einer Route, die die Middleware web nicht verwendet.

Es ist eine schlechte Praxis Callback-Routen durch die Art und Weise zu schaffen, sondern nur um von diesem speziellen Fall:

Route::get('/', function() { 

    $user = Auth::user(); 

    // $user = User::find(1); 

    if($user->isAdmin()){ 
     return "Admin"; 
    } 

    return "Normal User"; 

    })->middleware('web'); 
Verwandte Themen