2017-01-18 1 views
1

J'ai un problème avec le pilote de session cookie. Je dois créer une application qui fonctionne uniquement avec des cookies. Avec ma configuration, la session ne persiste pas dans Laravel 5.2 avec le pilote de cookie. Si j'utilise le pilote de session fichier, cela fonctionne.Pilote de cookie de session Laravel 5.2

.env fichier:

SESSION_DRIVER=cookie 

J'ai aussi créé un middleware qui vérifie si une valeur de session personnalisée existe (seule fonction handle()):

public function handle($request, Closure $next) 
{ 
    //dd(session('auth')) // null 
    if (!session('auth')) { 
     if ($request->ajax() || $request->wantsJson()) { 
      return response('Unauthorized.', 401); 
     } else { 
      return redirect('/'); 
     } 
    } 

    return $next($request); 
} 

J'ai ajouté le middleware à la $routeMiddleware tableau dans app/Http/Kernel.php:

'cookies' => \App\Http\Middleware\CheckCookies::class, 

Mes itinéraires sont:

Route::group(['middleware' => ['web']], function() { 
    Route::get('/', '[email protected]'); 
    Route::post('login', '[email protected]'); 

    Route::group(['middleware' => 'cookies'], function() { 
     Route::get('home','[email protected]'); 
     Route::get('logout','[email protected]'); 
    }); 
}); 

Voici ma méthode [email protected]:

public function login() 
{ 
    session([ 
     'auth' => ['name' => 'John Doe'] 
    ]); 

    return redirect('/home'); 
} 

Comment puis-je résoudre ce problème?

Répondre

0

Il suffit d'utiliser Cookie Facades in laravel.

Cookie::queue('key', 'value', $minutes); 

Pour faire cookies pour toujours

Cookie::forever('key', 'value'); 

Modifier votre code et essayer.

[email protected]

public function login(){ 
    $cookieValue=json_encode(array('name'=>'John Dow')); 
    Cookie::queue('auth', $cookieValue, 60); 
    return redirect('/home'); 
} 

CheckCookies Middleware

public function handle($request, Closure $next){ 

     if (!Cookie::get('auth')) 
     if ($request->ajax() || $request->wantsJson()) { 
        return response('Unauthorized.', 401); 
     } else { 
        return redirect('/'); 
     } 
     return $next($request); 
    } 
}