Laravel 保存 session 不成功
场景是测试前后端分离的登陆逻辑,但是出现了在控制器中保存session不成功的情况,默认使用的file驱动(我也测试了数据库保存session,都一样),版本是laravel 5.6,中间件已经启动startsession和跨域了的
1、这是路由:
// 测试
Route::get('/sessions/{id?}', function (Request $request, $id = null) {
if ($id !== null) {
$request->session()->put($id.'-'.time(), 'xx'.time());
}
return $request->session()->all();
});
// 用户登陆
Route::post('/user/login', 'UserController@login');
测试的逻辑是正常的,其写入的session可以保存,之后多次访问 /sessions 返回的session是能看见我之前保存的数据
2、登陆路由逻辑
public function login(Request $request)
{
$data = $request->json()->all();
if (Auth::attempt(['email' => $data['email'], 'password' => $data['password']])) {
$user = Auth::user();
if ($user->vertify == 1) {
$session_id = time();
$request->session()->put(time(), $data['email']);
// $session_id = $request->session()->getId();
// session()->save();
$all_sessions = $request->session()->all();
return [
'status' => true,
'sessionId' => $session_id,
'all_sessions' => $all_sessions
];
} else {
return [
'status' => false,
'message' => 'Your account are not vertified. '
];
}
} else {
return [
'status' => false,
'message' => 'Incorrect Email or Password 。。。。。'
];
}
}
当登录成功时,第一次立即返回的数据中all_sessions是有我想保存的值的,但是我之后再通过$session_id,$request->session()->all()查询时,并得不到我之前保存的值了。
按网上的说法是因为没有持久化保存session,我试了Session::save()、session->save()、$request->sesson()->save()都没有用。
所以我现在不确定,是我的session没保存成功,还是我之后再去取数据的方法不对
推荐文章: