從網上查詢資料得知,在laravel中使用__construct方法的時候,session還沒開啟,此時就需要用到中間件來解決。
$this->middleware(function ($request, $next) {
var_dump(\Session::get('userid'));
exit;
});
我這里用到的__construct函數,是用來判斷同一個賬號是否在另一個客戶端登錄,比如A客戶端正在登錄,此時B客戶端也要登錄,B客戶端登錄成功后,A客戶端就會退出
通過驗證當前的登錄IP是否一致來判斷。
這是一個公共類,該類繼承了Controller類,所以只要用到這個公共類,其他類只需把繼承的Controller類換成該公共類就可以了
public function __construct(Request $request)
{
// 判斷是否已在客戶端登錄
$this->middleware(function ($request, $next) {
$ip = md5($_SERVER['REMOTE_ADDR']);//當前的IP,md5加密
$res = DB::table('users')->where(['uid'=>\Session::get('userid')])->first();
if ($ip != $res->IP) {
return redirect('/adminlogin');
exit;
}
return $next($request);
});
}
