2016-02-01 213 views
0
class FileController extends Controller 
{ 
    public function login() 
    { 
     /* 
     * TODO: Handle via CAS 
     * Hardcoded for demo purposes 
     */ 
     Session::put('isLogged', true); 
     Session::put('index', "123456"); 

     return View::make('login'); 
    } 

    public function user() 
    { 
     if(Session::get('isLogged') == true) 
      return View::make('user'); 
    } 
} 

我有以下代碼。登錄時有一個鏈接到FileControllers @用戶。在第二頁我的會話數據丟失(Session :: all()爲空)。什麼可能導致這個問題?點擊後,Laravel會話數據丟失

+0

試試你的會話切換驅動程序(至可能'array'或'database'),然後清除緩存配置('PHP工匠配置:明確')。結果是什麼? –

+0

它仍然是空的。 – Hydroxis

+0

數據存在於FileController @ login – Hydroxis

回答

3

嘗試包裝你的路由(內部app/Http/routes.php)在Route::group()web中間件:

Route::group(['middleware' => ['web']], function() { 
    // My Routes 
}); 

一個簡單的方法來測試這一點:

Route::group(['middleware' => 'web'], function() { 
    Route::get('', function() { 
     Session::set('test', 'testing'); 
    }); 

    Route::get('other', function() { 
     dd(Session::get('test')); 
    }); 
}); 

如果您刪除Web中間件,你」我會收到null,因爲web中間件負責啓動會話。

確保您有web中間件組的app/Http/Kernel.php內:

protected $middlewareGroups = [ 
    'web' => [ 
     Middleware\EncryptCookies::class, 
     \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class, 
     \Illuminate\Session\Middleware\StartSession::class, 
     \Illuminate\View\Middleware\ShareErrorsFromSession::class, 
     Middleware\VerifyCsrfToken::class, 
    ], 
]; 
+0

問題仍然存在。 – Hydroxis

+0

在你的'app/Http/Kernel.php'裏面,你有中間件組「web」嗎? –

+0

奇怪...將會話驅動程序更改爲'file',然後查看您的會話是否在'storage/framework/sessions'中創建。您可能需要清除配置緩存才能生效。 –