需求描述
當前用戶只能在一個地方登錄,即同一賬號不能再2個以上窗口登錄,后登錄者踢出前登錄者。
設計思路
在用戶數據表中新增1個字段,記錄當前登錄用的session_id,當用戶登錄的時候把session_id存儲到數據庫中,然后在中間件認證里加判斷,判斷當前用戶sesson_id是否和數據庫中的session_id相等,如果相等繼續向下執行,反之注銷登錄。
具體實現
1.首先在用戶表中新增字段last_session,類型CHAR 40長度
2.在AuthController 控制器中實現父類方法authenticated方法,目的保存當前用戶的session_id到數據庫中。
PRotected function authenticated($request,$user){ $user->last_session = Session::getId(); $user->save(); return redirect()->intended($this->redirectPath()); }3.在Authenticate中間中加入判斷代碼if(Session::getId() != Auth::guard($guard)->user()->last_session){ return redirect('/admin/logout');}也可以在判斷代碼塊中加入其它,如提示當前賬號在其它地方登錄,然后注銷當前登錄等。
新聞熱點
疑難解答