做使用者退出登入,ajax調用刪除session登入時設定的$request->session()->put('user','value');
使用了$request->session()->forget('user');然後跳轉到login頁
但是發現跳轉後擷取的session資料仍然是刪除前的session狀態,所以還是保持了登入狀態。求教是我用法錯誤嗎?
下面是ajax調用的方法:
public function logout(Request $request) { if ($request->session()->has('user')) { $is_forgotten = $request->session()->forget('user'); if ($is_forgotten === null) echo json_encode(['result' => 1]); exit; } echo json_encode(['result'=>0,'msg'=>'退出失敗']); exit; }
下面是登入時給session的user賦值的代碼
public function valid(Request $request) { $r = $request->all(); $validator = Validator::make($r,[ 'username'=>'bail|required', 'password'=>'bail|required|integer', ]); if ($validator->fails()) { return redirect('admin/login')->withErrors($validator)->withInput(); } $where = [ 'name'=>$r['username'], 'pwd'=>md5($r['password']), ]; $hasExists = AdminModel::hasExists($where); if (null !== $hasExists) { $request->session()->put('user',json_encode(['name'=>$r['username']])); return redirect('admin'); } else { return redirect('admin/login')->with('hasExists','使用者名稱或密碼錯誤'); } }
回複內容:
做使用者退出登入,ajax調用刪除session登入時設定的$request->session()->put('user','value');
使用了$request->session()->forget('user');然後跳轉到login頁
但是發現跳轉後擷取的session資料仍然是刪除前的session狀態,所以還是保持了登入狀態。求教是我用法錯誤嗎?
下面是ajax調用的方法:
public function logout(Request $request) { if ($request->session()->has('user')) { $is_forgotten = $request->session()->forget('user'); if ($is_forgotten === null) echo json_encode(['result' => 1]); exit; } echo json_encode(['result'=>0,'msg'=>'退出失敗']); exit; }
下面是登入時給session的user賦值的代碼
public function valid(Request $request) { $r = $request->all(); $validator = Validator::make($r,[ 'username'=>'bail|required', 'password'=>'bail|required|integer', ]); if ($validator->fails()) { return redirect('admin/login')->withErrors($validator)->withInput(); } $where = [ 'name'=>$r['username'], 'pwd'=>md5($r['password']), ]; $hasExists = AdminModel::hasExists($where); if (null !== $hasExists) { $request->session()->put('user',json_encode(['name'=>$r['username']])); return redirect('admin'); } else { return redirect('admin/login')->with('hasExists','使用者名稱或密碼錯誤'); } }
建議樓主在瞭解一下Larave的Session機制,如果你的代碼中途有exit,最好在它之前Session::save()一下