2017-01-18 7 views
1

クッキーセッションドライバに問題があります。私は、クッキーだけで動作するアプリケーションを作成する必要があります。私の設定では、セッションはCookieドライバでLaravel 5.2に残っていません。 ファイルセッションドライバを使用すると動作します。Laravel 5.2セッションクッキードライバ

.envファイル:

SESSION_DRIVER=cookie 

私は、カスタムセッション値が存在するかどうかをチェックするミドルウェア(のみ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); 
} 

私は$routeMiddlewareにミドルウェアを追加しましたのapp/Http/Kernel.phpの配列

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

私のルートは以下のとおりです。

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

    return redirect('/home'); 
} 

がどのように私はこの問題を解決することができます

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]'); 
    }); 
}); 

ここに私の[email protected]方法ですか?

答えて

0

ちょうどCookieファサードを使用してください。

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

クッキーを作るために、永遠

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

はあなたのコードを変更し、これを試してみてください。

[email protected]

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

CheckCookiesミドルウェア

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); 
    } 
}