Laravel 单击后会话数据丢失
Laravel session data is lost after click
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');
}
}
我有以下代码。登录时有一个 link 转到 FileControllers@user 。在第二页上,我的会话数据丢失了(Session::all() 为空)。是什么导致了这个问题?
尝试使用 web
中间件将您的路由(在 app/Http/routes.php
内)包装在 Route::group()
中:
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'));
});
});
如果删除网络中间件,您将收到 null
,因为 web
中间件负责启动会话。
确保您的 app/Http/Kernel.php
:
中有 web
中间件组
protected $middlewareGroups = [
'web' => [
Middleware\EncryptCookies::class,
\Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
\Illuminate\Session\Middleware\StartSession::class,
\Illuminate\View\Middleware\ShareErrorsFromSession::class,
Middleware\VerifyCsrfToken::class,
],
];
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');
}
}
我有以下代码。登录时有一个 link 转到 FileControllers@user 。在第二页上,我的会话数据丢失了(Session::all() 为空)。是什么导致了这个问题?
尝试使用 web
中间件将您的路由(在 app/Http/routes.php
内)包装在 Route::group()
中:
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'));
});
});
如果删除网络中间件,您将收到 null
,因为 web
中间件负责启动会话。
确保您的 app/Http/Kernel.php
:
web
中间件组
protected $middlewareGroups = [
'web' => [
Middleware\EncryptCookies::class,
\Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
\Illuminate\Session\Middleware\StartSession::class,
\Illuminate\View\Middleware\ShareErrorsFromSession::class,
Middleware\VerifyCsrfToken::class,
],
];