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.
zeigen Sie Ihre auth.php – msonowal
OK. Lass es mich posten. – Dev
@msonowal Ich habe es gepostet. – Dev