介绍
这篇文章主要介绍了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牌身份验证功能有哪些”这篇文章对大家有帮助,同时也希望大家多多支持,关注行业资讯频道,更多相关知识等着你来学习!