1: 首先在数据库的 users 表中添加两个字段

1): token

2): time_outtoken 用于存储用户的 tokentime_out 用于设置用户 token 的过期时间首先创建函数: checkToekn($token)函数用于检验 token 是否存在, 并且更新 token

public function checkToken($token)

{

$user = new \app\index\model\Users();

$res = $user->field('time_out')->where('token', $token)->select();

if (!empty($res)) {

//dump(time() - $res[0]['time_out']);

if (time() - $res[0]['time_out'] > 0) {

return 90003; //token长时间未使用而过期,需重新登陆

}

$new_time_out = time() + 604800; //604800是七天

$res = $user->isUpdate(true)

->where('token', $token)

->update(['time_out' => $new_time_out]);

if ($res) {

return 90001; //token验证成功,time_out刷新成功,可以获取接口信息

}

}

return 90002; //token错误验证失败

}

创建函数: douserLogin($username,$password)用于验证用户名密码, 并登陆, 返回 token 信息

public function douserLogin()

{

$user = new \app\index\model\Users();

$userisset = $user->where('username', $username)->find();

if ($userisset == null) {

return json_decode('{"user":"' . $username . '","code":"400","msg":"用户不存在"}');

} else {

$userpsisset = $user

->where('username', $username)

->where('password', sha1(md5($password)))->find();

if ($userpsisset == null) {

return json_decode('{"user":"' . $username . '","code":"401","msg":"密码错误"}');

} else {

//session('user', $username);

$token = $this->makeToken();

$time_out = strtotime("+7 days");

$userinfo = ['time_out' => $new_time_out,

'token' => $token];

$res = $user->isUpdate(true)

->where('username', $username)

->update($userinfo);

if ($res) {

return json_decode('{"user":"' . $username . '","toekn":'.$token.' "code":"0","msg":"登录成功"}');

}

}

}

}

创建函数: makeToekn()创建 token

private function makeToken()

{

$str = md5(uniqid(md5(microtime(true)), true)); //生成一个不会重复的字符串

$str = sha1($str); //加密

return $str;

}

使用的时候, 在需要验证的地方加上如下内容即可判断是否登陆

$login = new \app\index\controller\Login;

$res = $login->checkToken($token);

if($res ==90001){

echo 'ok';

}

else if($res == 90002){

echo 'err';

}

else if($res == 90003){

echo 'relogin';

}

微视觉 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权

转载请注明原文链接:ThinkPhp5 实现token登陆

基于token实现登陆php,ThinkPhp5 实现token登陆相关推荐

  1. vue3+nodejs基于RSA加密的身份认证(token的组成及使用)

    nodejs学习 1.express & nodejs & mysql 新建项目 2.nodejs尝试登陆接口 3.nodejs的前端项目搭建以及登陆接口开发 4.前端上传图片form ...

  2. 登陆验证发展史(cookie认证->session认证->token认证->JWT,单系统登陆->多系统单点登陆)

    登陆验证发展史有两条主线.在服务部署方式层面,早期的Web服务系统简单一般都是单系统,登陆的话就登陆这一个系统就好了,随着系统复杂性越来越高,一个大的系统往往由很多子系统组成,用户使用这个大系统时不可 ...

  3. html ssm写用户登陆验证,ssm 使用token校验登录的实现

    背景 token的意思是"令牌",是服务端生成的一串字符串,作为客户端进行请求的一个标识. 当用户第一次登录后,服务器生成一个token并将此token返回给客户端,以后客户端只需 ...

  4. loadrunner之获取登陆接口中的token值及 LoadRunner数据更新与更新方式

    Loadrunner获取登陆接口中的token值   登录后,服务器会生成token并返回给客户端,之后客户端与服务器交互的操作中,服务器程序会对比这个token,正确则允许操作,否则拒绝客户端请求. ...

  5. 又一方案实现发行Token的功能,BCH平台Token即将迎来大爆发

    前段时间BCH社区中提出了多种智能合约方案,如虫洞Wormhole,Bitprim的Keoken,Cryptonize.it推出的彩色币协议,另一个是由Jonald Fyookball(Electro ...

  6. token干什么用_浅谈Token理解运用

    周末没带电脑,闲着也是闲着,出来分享一点东西,也当自己学习和巩固了. 今天分享一下Token的理解,首先Token的定义是什么? 概念 Token被翻译成为('令牌','标记')在计算机中的含义也差不 ...

  7. cookie session token区别_cookie、session与token的真正区别

    发展史 1.很久很久以前,Web 基本上就是文档的浏览而已, 既然是浏览,作为服务器, 不需要记录谁在某一段时间里都浏览了什么文档,每次请求都是一个新的HTTP协议, 就是请求加响应, 尤其是我不用记 ...

  8. 使用token验证登录信息,把token存到数据库中

    使用token验证登录信息,把生成的token存到数据库中,根据用户id判断是否重复登录,重复登录就重置到期时间 调用登录接口返回出token和uuid信息 每次访问都需要在Headers里面添加该数 ...

  9. 叶开|Token的10大设计模式及Token金融与治理(长篇干货)

    作者:叶开 Token经济系统设计方面的先行者. 矩阵数字经济智库合伙人,林达控股(1041HK)执行董事,中农普惠金服董事合伙人,南京大学兼职教授.专注于传统产业升级.产业金融和区块链,著有< ...

最新文章

  1. 小学计算机课知识点总结,小学计算机教学总结3篇
  2. php客户反馈发邮箱,PHP实现通过get方式识别用户发送邮件的方法
  3. Python的3种执行方式
  4. 动态规划——变形的杨辉三角形
  5. POJ-3041 匈牙利算法 二分图最大匹配
  6. 关于Chrome内核88版本无法正常使用Adobe Flash Player公告
  7. iOS运行出现No application was specified.
  8. atitit.获取connection hibernate4
  9. CentOS 7.6 配置VNC远程访问服务器图形界面
  10. FreeFileSync 免费文件同步软件 实时自动备份重要资料
  11. android 修复工具下载,安卓数据恢复软件(FonePaw for Android)
  12. 任意门怎么用团发_任意门日淘app官方手机版-任意门日淘安卓版下载v1.4.6-壹六下载...
  13. matlab数组、矩阵运算
  14. 基于单片机的水温液位自动控制系统设计
  15. linux系统中归档管理器,深度商店应用归档管理器、KShutdown、7-Zip、California
  16. 清华长庚医院通过医视云平台举办首次肝胆外科肿瘤远程多学科会诊
  17. wk一sm5时间温度控制器_吓人!用“御寒神器”取暖,竟上了手术台……注意!温度不高也会烫伤...
  18. ALFA深度学习软件金属外观缺陷检测应用
  19. stm32 spi从模式配置解答
  20. 华三防火墙Reth链路冗余技术

热门文章

  1. ZigBee 3.0实战教程-Silicon Labs EFR32+EmberZnet-2-02:芯科的软件解决方案Gecko SDK
  2. 浅谈云计算的安全问题——“瑞友杯”虚拟化征文
  3. Project的关键路径、关键任务
  4. Android系统架构-----Android的系统体系架构
  5. docker insecure-registry
  6. 全球与中国电梯张紧装置市场现状及未来发展趋势(2022)
  7. android:exported =true,什么是具有相同用户ID的Android应用程序
  8. 推荐学习方向及就业方向
  9. xplorer2 的注册码
  10. get新方法:一个歌曲分享链接提取歌曲文件