单用户登陆demo-后者挤到前者,类似QQ
生活随笔
收集整理的這篇文章主要介紹了
单用户登陆demo-后者挤到前者,类似QQ
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
單用戶登陸demo ,采用的是Tp5。
流程是,當(dāng)用戶首次登陸是驗(yàn)證用戶帳號(hào)密碼,成功的,用當(dāng)前時(shí)間戳加上用戶id和ip?拼接成一個(gè)標(biāo)識(shí),暫且sign ,然后存入cookie ,時(shí)間戳存入緩存redis? ,session?攜帶用戶信息
//單點(diǎn)登陸demopublic function olineOneLogin(){ $params = Request::only('username,password');$validate = Validate::make(['username' => 'require','password' => 'require',]);if (!$validate->check($params)) {Error($validate->getError());}$userdata = Db::connect('login')->table('user')->where('username',$params['username'])->where('pass',md5($params['password']))->find();if( $userdata ){$time = time();$singleToken = md5(Request::ip().$userdata['uid']. $time);Cache::set($userdata['uid'],$time);Session::set('login',$userdata);Cookie::set('SINGLETOKEN',$singleToken);echo 'Landing successfully';}else{Error('帳號(hào)或密碼錯(cuò)誤!');}}
驗(yàn)證方法?就是用cookie里的sign?和redis的值對(duì)比下
//驗(yàn)證方法function handle(){$userinfo = Session::get('login');if($userinfo){$singletoken = Cookie::get('SINGLETOKEN');if($singletoken){$time = Cache::get($userinfo['uid']);$ip = Request::ip();$secret = md5($ip.$userinfo['uid'].$time);if ($singletoken != $secret) {Session::delete('login');exit('您的帳號(hào)在另一個(gè)地點(diǎn)登錄'); }//通過(guò)驗(yàn)證return ;}else{exit('請(qǐng)先登陸1'); }}else{exit('請(qǐng)先登陸2');}}
然后調(diào)用
public function user(){ //驗(yàn)證,可以寫中間件或者父類 ,我這是demo$this->handle();echo 'hello world';}
轉(zhuǎn)載于:https://www.cnblogs.com/liubaoqing/p/10861175.html
總結(jié)
以上是生活随笔為你收集整理的单用户登陆demo-后者挤到前者,类似QQ的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 面向对象内置方法
- 下一篇: ColorStateList 使用详解