2017-01-02 3 views
1

Vor kurzem habe ich auf Laravel 5.3 von Laravel 5.2 aktualisiert und danach habe ich die Localization Middleware gefunden, die ich für die Einstellung der Sprache des Benutzers erstellt habe funktioniert nicht mehr funktioniert, warum nicht?Laravel 5.3 Middleware Schutz funktioniert nicht

Ich verwende token basierend authentication.

Die Middleware ist als:

<?php namespace App\Http\Middleware; 

use Closure; 
use PhpSpec\Exception\Exception; 
use Illuminate\Support\Facades\Auth; 


class Localization { 

    public function handle($request, Closure $next, $guard = null) 
    { 
     if(!Auth::guard()->guest()) 
     { 
      if(!session('current_locale')) { 
       $localecode = Auth::guard($guard)->user()->getLocale(); 
       session('current_locale',empty ($localecode) ? 'en' : $localecode); 
       \App::setLocale($localecode); 
      }else{ 
       \App::setLocale(session('current_locale')); 
      } 
     } 
     return $next($request); 
    } 

} 

Und mein routes/api.php ist als:

Route::group(['prefix' => 'api/service/v1', 'middleware' => ['api'], 'guard' => 'api'], function(){ 
    Route::get("someUrlHere","[email protected]"); 
    Route::group(['middleware' => ['auth:api','localization','beforeMiddleware', 'afterApiCallMiddleware'], 'guard' => 'api'], function() { 
     Route::get("SomeOtherUrlHere","[email protected]"); 
    }); 
}); 

Die config/auth.php ist als:

<?php 

return [ 
    'defaults' => [ 
     'guard' => 'web', 
     'passwords' => 'users', 
    ], 

    'guards' => [ 
     'web' => [ 
      'driver' => 'session', 
      'provider' => 'users', 
     ], 

     'api' => [ 
      'driver' => 'token', 
      'provider' => 'users', 
     ], 
    ], 

    'providers' => [ 
     'users' => [ 
      'driver' => 'eloquent', 
      'model' => App\Models\User::class, 
     ], 
    ], 

    'passwords' => [ 
     'users' => [ 
      'provider' => 'users', 
      'email' => 'auth.emails.password', 
      'table' => 'password_resets', 
      'expire' => 60, 
     ], 
    ], 
]; 

Die app/Http/Kernal.php ist als:

<?php namespace App\Http; 

use Illuminate\Foundation\Http\Kernel as HttpKernel; 

class Kernel extends HttpKernel { 

    protected $middleware = [ 
     \Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode::class, 
     'Barryvdh\Cors\HandleCors', 

    ]; 

    protected $middlewareGroups = [ 
     'web' => [ 
      \App\Http\Middleware\EncryptCookies::class, 
      \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class, 
      \Illuminate\Session\Middleware\StartSession::class, 
      \Illuminate\View\Middleware\ShareErrorsFromSession::class, 
      \App\Http\Middleware\VerifyCsrfToken::class, 
      \Illuminate\Routing\Middleware\SubstituteBindings::class, 
     ], 

     'api' => [ 
      'throttle:60,1', 
      'bindings', 
     ], 
    ]; 

    protected $routeMiddleware = [ 
     'auth' => 'App\Http\Middleware\Authenticate', 
     'auth.basic' => 'Illuminate\Auth\Middleware\AuthenticateWithBasicAuth',  
     'guest' => 'App\Http\Middleware\RedirectIfAuthenticated', 
     'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class, 
     'localization'=>'App\Http\Middleware\Localization', 
     'afterMiddleware' => 'App\Http\Middleware\AfterMiddleware', 
     'beforeMiddleware' => 'App\Http\Middleware\BeforeMiddleware', 
     'afterApiCallMiddleware' => 'App\Http\Middleware\AfterApiCall', 
     'can' => \Illuminate\Auth\Middleware\Authorize::class, 
     'bindings' => \Illuminate\Routing\Middleware\SubstituteBindings::class, 
    ]; 

} 

Bei jedem Aufruf der Methode finde ich die $guard Null in handle() Methode der Localization Middleware.

+0

zeigen Sie Ihre auth.php – msonowal

+0

OK. Lass es mich posten. – Dev

+0

@msonowal Ich habe es gepostet. – Dev

Antwort

2

Da $guard ein zusätzlicher Parameter in der Middleware ist, müssen Sie ihn manuell übergeben. Sie sollten in der Lage sein zu tun, werden diese von dem Wert in Ihrer Route :: Gruppe Middleware-Array zu ändern:

'localization' 

zu:

'localization:api' 

hoffte, das hilft!

+0

Es funktioniert. Danke vielmals. – Dev

Verwandte Themen