通过redis实现不同ip下只能一个用户登录,如果第二个ip登录的时候下线第一个ip用户
此功能通过session和redis共同完成的功能,如果是前后端分离不使用session的话,可以通过数据库和redis来实现
-
登陆成功后把输入存到redis
//登陆成功后把输入存到redis session("userinfo",$user_res); $session_id = session_id(); $ip = request()->ip(); Cache::store('redis')->set("userid".$user_res['uid'],$session_id); Cache::store('redis')->set("userip".$user_res['uid'],$ip); Cache::store('redis')->set("logintime".$user_res['uid'],time());
-
在公共方法当中定义验证方法
// 可定义到公共方法 public function yanzhen() { if(session('userinfo') == null){ $this->redirect('Login/login'); }else{ $userinfo = session('userinfo'); $session_userid = Cache::store('redis')->get("userid".$userinfo['uid']); $last_ip = Cache::store('redis')->get("userip".$userinfo['uid']); $now_ip = request()->ip(); // session_id !=, ip !=, false if($session_userid != session_id() && $last_ip != $now_ip){ session('userinfo',null); $this->redirect('Login/login_err'); }else{ Cache::store('redis')->set("userip".$userinfo['uid'],$now_ip); Cache::store('redis')->set("logintime".$userinfo['uid'],time()); } } }