thinkphp5框架API牌身份验证功能有哪些

  介绍

这篇文章主要介绍了thinkphp5框架API牌身份验证功能有哪些,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获、下面让小编带着大家一起了解一下。

使用说明:登陆时生成令牌和刷新用的refresh_token,返回给客户端,客户端收到保存本地localStorage等,每次访问接口带令牌上,后端验证牌存在并且一致后方可执行接下来的动作,假如不存在就返回令牌过期,客户端调用刷新接口传入令牌和refresh_token,服务器端进行验证,验证通过重新生成新的令牌保存数据库,返回给客户端客户端刷新本地令牌访问即可继续,当refresh_token验证失败就清除数据库牌,过期时间等信息

简单的令牌生成函数(公共函数文件常见)

function  create_token (id、out_time美元){   return 才能substr (md5 (id。out_time美元),5、26);   }

验证登陆方法(模型)

public  function  checkLogin(用户名、密码美元){   ,,,driver 美元;=,self::字段(& # 39;用时,passwd # 39;)→地方(& # 39;公司# 39;$ username)→whereOr(& # 39;电话# 39;$ username)→找到();   ,,,if (空(司机)美元){   ,,,,,这个→美元error =, & # 39;账号不存在& # 39;;   ,,,,,return 假;   ,,,}   ,,,if (司机美元[& # 39;密码# 39;],!=,md5 (passwd美元)){   ,,,,,这个→美元error =,“密码不正确“;   ,,,,,return 假;   ,,,}   ,,,//out_time 美元;=,strtotime(& # 39; +, 1,天# 39;);   ,,,out_time 美元;=,strtotime(& # 39; +, 1,分钟# 39;);   ,,,token 美元;=,create_token(司机美元[& # 39;用时# 39;],out_time美元);   ,,,如果(错误===self::保存((& # 39;标记# 39;=在令牌,美元& # 39;time_out& # 39;=祝辞;$ out_time],[& # 39;用时# 39;=祝辞司机美元[& # 39;用时# 39;]])){   ,,,,,这个→美元error =, & # 39;登陆失败& # 39;;   ,,,,,return 假;   ,,,}   ,,,refresh_token_out_time 美元;=,strtotime(& # 39; +, 5,天# 39;);   ,,,refresh_token 美元;=,create_token(司机美元[& # 39;用时# 39;],refresh_token_out_time美元);   ,,,缓存:设置(“token",令牌,美元60);   ,,,缓存:设置(“driver_id",司机美元[& # 39;用时# 39;],refresh_token_out_time美元);//设置ID的过期时间和更新令牌的牌时间一样用于更新的时候获取用户信息   ,,,缓存:设置(& # 39;refresh_token& # 39;, refresh_token美元,美元refresh_token_out_time);   ,,,return [& # 39;标记# 39;=在令牌,美元& # 39;refresh_token& # 39;=祝辞refresh_token美元,& # 39;in_expire& # 39;=祝辞out_time美元);   }

标记刷新方法(模型)

public  function  refreshToken (refresh_token美元,令牌美元){   ,,,if (!收取(缓存::(& # 39;refresh_token& # 39;)),或是缓存::获得(& # 39;refresh_token& # 39;) !=$ refresh_token) {   ,,,,,这个→美元error =, & # 39;刷新令牌失败& # 39;;   ,,,,,return 假;   ,,,}   ,,,cache_driver_id 美元;=,缓存:获得(& # 39;用时# 39;);   ,,,driver 美元;=,self::字段(& # 39;用时,passwd # 39;)→地方(& # 39;用时# 39;,cache_driver_id美元)→地方(& # 39;标记# 39;,令牌美元)→找到();   ,,,if (空(司机)美元){   ,,,,,这个→美元error =, & # 39;参数错误& # 39;;   ,,,,,return 假;   ,,,}   ,,,out_time 美元;=,strtotime(& # 39; +, 1,天# 39;);//新的过期时间   ,,,token 美元;=,create_token(司机美元[& # 39;用时# 39;],out_time美元);//更新令牌   ,,,如果(错误===self::保存((& # 39;标记# 39;=在令牌,美元& # 39;time_out& # 39;=祝辞;$ out_time],[& # 39;用时# 39;=祝辞司机美元[& # 39;用时# 39;]])){   ,,,,,缓存:明确(令牌);   ,,,,,这个→美元error =, & # 39;刷新失败& # 39;;   ,,,,,return 假;   ,,,}   ,,,缓存:设置(“token",令牌美元,864000);   ,,,return [& # 39;标记# 39;=在令牌,美元& # 39;in_expire& # 39;=祝辞out_time美元);   }

退出方法(模型)

public  function 注销(令牌,refresh_token美元=& # 39;& # 39;){   ,,,driver 美元;=,self::字段(& # 39;用时,passwd # 39;)→地方(& # 39;标记# 39;,令牌美元)→找到();   ,,,自我:保存((& # 39;标记# 39;=祝辞& # 39;& # 39;,& # 39;time_out& # 39;=祝辞& # 39;& # 39;],[& # 39;标记# 39;=祝辞;$牌]);   ,,,缓存:明确(& # 39;标记# 39;);   ,,,缓存:明确(& # 39;refresh_token& # 39;);   }

感谢你能够认真阅读完这篇文章,希望小编分享的“thinkphp5框架API牌身份验证功能有哪些”这篇文章对大家有帮助,同时也希望大家多多支持,关注行业资讯频道,更多相关知识等着你来学习!

thinkphp5框架API牌身份验证功能有哪些