2017-03-21 7 views
0

ich eine ziemlich straight forward-Middleware haben:Laravel 5, warum ist eine Umleitung auf benannte Route in Middleware verursacht „localhost umgeleitet Sie zu oft“

protected $auth; 

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

/** 
* Handle an incoming request. 
* 
* @param \Illuminate\Http\Request $request 
* @param \Closure $next 
* @return mixed 
*/ 
public function handle($request, Closure $next) 
{ 

    //dd($this->auth->user()); 
    if($this->auth->user()->id && $this->auth->user()->pastDueFees()){ 
     \Session::flash('message','You must pay past due deal fees before using the rest of the website'); 
     return redirect()->route('profile.investment-fees'); 
    } 

    return $next($request); 
} 

Dies bewirkt, dass die Umleitung Schleife. Ich rufe die Middleware nur über Kernel.php an.

Mein Kernal.php:

<?php namespace App\Http; 

Verwendung Illuminate \ Foundation \ Http \ Kernel als HttpKernel;

Klasse Kernel erweitert HttpKernel {

/** 
* The application's global HTTP middleware stack. 
* 
* @var array 
*/ 
protected $middleware = [ 
    'Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode', 
    'Illuminate\Cookie\Middleware\EncryptCookies', 
    'Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse', 
    'Illuminate\Session\Middleware\StartSession', 
    'Illuminate\View\Middleware\ShareErrorsFromSession', 
    'App\Http\Middleware\VerifyCsrfToken', 
    'App\Http\Middleware\FeesOwed' 
]; 

/** 
* The application's route middleware. 
* 
* @var array 
*/ 
protected $routeMiddleware = [ 
    'auth' => 'App\Http\Middleware\Authenticate', 
    'auth.signed' => 'App\Http\Middleware\AuthenticateSigned', 
    'fees' => 'App\Http\Middleware\FeesOwed', 
    'auth.subscribed' => 'App\Http\Middleware\AuthenticateSubscribed', 
    'admin' => 'App\Http\Middleware\AuthenticateAdmin', 
    'auth.basic' => 'Illuminate\Auth\Middleware\AuthenticateWithBasicAuth', 
    'guest' => 'App\Http\Middleware\RedirectIfAuthenticated', 
]; 

}

Dank im Voraus.

+1

Wie sehen Ihre Routen aus? Diese Middleware wird nicht auf die 'profile.investment-fees' Route angewendet? – jfadich

+0

Nicht bewerbe ich mich nicht auf Strecken, nur um es als Middleware Zugabe in Kernal.php –

+0

können Sie uns Ihre Kernel-Datei zeigen, wo Sie die Middleware angewendet – Carlos

Antwort

1

Sie müssen diese Middleware auf allen Strecken anzuwenden, sondern profile.investment.fees. In Ihrem Kernel, fügen Sie Ihre Middleware im $routeMiddleware Array als

'alias' => \App\Http\Middleware\MyMiddleware::class, 

Dann in Ihrer Route eine Gruppe definieren, die Middleware enthält, und stellen Sie sicher, profile.investment-fees aus ihm

Route::get('pif', '[email protected]')->name('profile.investment-fees'); 

//Route group 
Route::group(['middleware' => 'alias'], function(){ 
    //every other routes that need the middleware 
}); 

Alternativ ist in der Middleware Sie könnten diese spezifische Route einfach umgehen, indem Sie sie mit einem if-sonst ignorieren.

public function handle(Request $request, Closure $next) { 
    if ($request->is('pif')) { 
     return $next($request); 
    } 
    ... 
} 
Verwandte Themen