2016-11-13 4 views
1

Ich versuche in Laravel 5.3 eine Middleware zu erstellen, die überprüft, ob der Benutzer ein Administrator ist, sodass ich einige Routen nur auf Administratoren beschränken kann.Verwenden von Middleware in Laravel 5.3

Meine Middleware:

<?php 

namespace App\Http\Middleware; 

use Closure; 

class IsAdmin 
{ 
/** 
* Handle an incoming request. 
* 
* @param \Illuminate\Http\Request $request 
* @param \Closure $next 
* @return mixed 
*/ 
    public function handle($request, Closure $next) 
    { 
     if(!\Auth::user()->hasRole('admin')) { 
      return redirect('login'); 
     } 

     return $next($request); 
    } 
} 

melde ich mich in der Kernal, ti auf die wie unten geschützt Zugabe:

protected $routeMiddleware = [ 
    .... 
    'isadmin' => App\Http\Middleware\IsAdmin::class, 
] 

Dann versuche ich meine Route zu sichern mit:

Route::resource('user', 'UserController')->middleware('isadmin'); 

Aber ich bekomme den Fehler von meiner Route-Datei:

FatalThrowableError in web.php line 103: 
Call to a member function middleware() on null 

Antwort

3

Sie sollten Middleware mit ::group() gelten:

Route::group(['middleware' => 'isadmin'], function() { 
    Route::resource('user', 'UserController'); 
}); 
0

In UserController Konstruktor Sie verwenden können:

$this->middleware('isadmin'); 

Docs - Controller Middleware

Verwandte Themen