原理:同一个账号在多台设备上登录,前者被后者推送下线;假设账号在设备A登录,账号在设备B登录,此时设备A登录的账号被推送下线。登录成功后,将当前时间存入session,并做一个token值存入用户数据库;2.在验证用户是否登录的模块中,如果用户已经登录,取出用户数据库中的token,做一个最新的token,两者是否相等,如果不相等,则用户去离线;代码实现1、在登录成功代码模块下操作;//登录验证$user=DB::table('user')->where(['username'=>account,'password'=>password])->first();if($user){#login成功$time=time();$token=md5($user['id'].$time);//创建令牌并使用md5加密DB::table('user')->where(['id'=>$user['id']])->update(['token'=>$token]);//将token存入当前用户数据session(['token_time'=>$time]);//将当前时间存入session(['user'=>$user]);//保存用户信息进入session}else{#登录失败逻辑处理}2.在判断用户是否登录的代码模块下运行;$userInfo=session('user');//从会话中获取用户信息if($userInfo){#存在用户信息$token_time=session('token_time');//从会话中获取时间$last_token=md5($userInfo['id'].$token_time);//获取当前token值$token=DB::table('user')->where('id',$userInfo['id'])->value('token');//获取用户数据中的tokenif($last_token!=$token){//如果当前token值不等于数据中的token值,则清除用户信息,并注销用户$userInfo=null;}}else{#没有对用户信息进行逻辑处理(跳转到登录界面)}最后,如果觉得文章不错,请点个赞,关注一下!技术交流,可以关注微信公众号【GitWeb】,加我好友讨论微信交流群:加好友(备注觉得不行)邀请你进群,一起学习,一起进步