2016-07-12 6 views
1

Я много искал перед публикацией, и каждое «решение», которое я нашел, не работает.Laravel 5.2 Сессии не сохраняются

Я не могу получить значение сеанса с другого маршрута, чем текущий.

routes.php

Route::group(['middleware' => 'web', 'prefix' => 'blog', 'namespace' => 'Modules\Blog\Http\Controllers'], function() 
{ 

Route::get('/','[email protected]'); 

Route::get('/home',['as' => 'home', 'uses' => '[email protected]']); 

Route::get('auth/login', 'Auth\[email protected]'); 

Route::post('auth/login', 'Auth\[email protected]'); 


Route::group(['middleware' => 'blog.auth'], function(){ 
    Route::get('/admin',['as'=>'dashboard','uses'=>'[email protected]']); 
    }); 
}); 

Kernel.php

protected $middlewareGroups = [ 
    'web' => [ 
     \ommitedbutcorrect\Http\Middleware\EncryptCookies::class, 
     \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class, 
     \Illuminate\Session\Middleware\StartSession::class, 
     \Illuminate\View\Middleware\ShareErrorsFromSession::class 
    ], 

    'admin' => [ 
     \Modules\Admin\Http\Middleware\ControllerResolver::class, 
    ], 
    'admin.auth' => [ 
     \Modules\Admin\Http\Middleware\AdminAuthenticate::class, 
    ], 
    'blog.auth' => [ 
     \Modules\Blog\Http\Middleware\BlogAuthenticate::class, 
    ], 
    'api' => [ 
     'throttle:60,1', 
    ], 
]; 

AuthController.php

Chmod 777 на хранения и Bootstrap папки, базы данных водителя сессии.

Кажется, что сеанс создается каждый раз с запросом, который объясняет, почему я не могу получить значение с помощью Session: get ('foo'), который теперь возвращает null.

Я потратил 3 дня на это уже: /.

Поблагодарили бы за помощь, если вам, ребята, нужны подробности/код, просто скажите слово.

ответ

0

Fixed очистить кэш с кэшем PHP ремесленника: четкого

я получил мой проект от другого человека, поэтому независимо от того, каких изменений я сделал, он использовал кэшированные настройки (в данном случае он использует БД сессии и I хотел использовать сеансы на основе файлов)

0

Я не знаю, почему Laravel поставляется с сессии промежуточного слоя в неверном массиве, но переместить StartSession промежуточное программное обеспечение в защищенную группу промежуточного

protected $middleware = [ 
    \Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode::class, 
    \Illuminate\Session\Middleware\StartSession::class, 
]; 
+0

Просто сделал, еще печать Null. – Sylar

0

Если вы на Laravel> = v5.2.27, вы необходимо удалить промежуточное программное обеспечение web из вашего файла app/Http/routes.php. Начиная с v5.2.27, все маршруты внутри файла app/Http/routes.php уже включены в группу промежуточного программного обеспечения web, поэтому добавление промежуточного программного обеспечения снова внутри файловых сообщений с сеансами.

+0

Mine - версия 5.2.39. Если я удаляю веб-промежуточное программное обеспечение из файла маршрутов, он не работает (даже laravel_session не создается) – Sylar

0

Регистрация нового поставщика услуг?

+0

Errrm, приходите еще? – Sylar

+1

показать мне массив 'providers' => [...] файла config/app.php –

+0

http://pastebin.com/ecWds0kT здесь он идет – Sylar

1

Я предполагаю, что это было потому, что вы использовали модули вместо стандартной структуры laravel по умолчанию.

все маршруты связывают с промежуточным программным обеспечением по умолчанию по умолчанию в laravel 5.2, однако вы используете модули, и каждый модуль имеет отдельный файл routes.php. Вам необходимо вручную привязать маршруты с помощью промежуточного программного обеспечения в сети, иначе ваш сеанс будет потерян.

Это было то, что я сделал, когда встретил аналогичную проблему. Пожалуйста, дайте мне знать, что мое понимание верное.

Смежные вопросы