2016-02-01 168 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'中创建。您可能需要清除配置缓存才能生效。 –