通过redis实现不同ip下只能一个用户登录,如果第二个ip登录的时候下线第一个ip用户

通过redis实现不同ip下只能一个用户登录,如果第二个ip登录的时候下线第一个ip用户

此功能通过session和redis共同完成的功能,如果是前后端分离不使用session的话,可以通过数据库和redis来实现

  1. 登陆成功后把输入存到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());
    
  2. 在公共方法当中定义验证方法

     // 可定义到公共方法
     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());
    
     		}
     	}
     }
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值