当前位置: 首页 > news >正文

郑州官网网站推广优化公司游戏挂机赚钱一小时20

郑州官网网站推广优化公司,游戏挂机赚钱一小时20,武汉做网站互助系统,手机wap网站特效ThinkPHP 集成 jwt 技术 token 验证 一、思路流程二、安装 firebase/php-jwt三、封装token类四、创建中间件,检验Token校验时效性五、配置路由中间件六、写几个测试方法,通过postman去验证 一、思路流程 客户端使用用户名和密码请求登录服务端收到请求&…

ThinkPHP 集成 jwt 技术 token 验证

  • 一、思路流程
  • 二、安装 firebase/php-jwt
  • 三、封装token类
  • 四、创建中间件,检验Token校验时效性
  • 五、配置路由中间件
  • 六、写几个测试方法,通过postman去验证

一、思路流程

  1. 客户端使用用户名和密码请求登录
  2. 服务端收到请求,验证用户名和密码
  3. 验证成功后,服务端会签发一个token,再把这个token返回给客户端
  4. 客户端收到token后可以把它存储起来,比如放到cookie中
  5. 客户端每次向服务端请求资源时需要携带服务端签发的token,可以在cookie或者header中携带
  6. 服务端收到请求,然后去验证客户端请求里面带着的token,如果验证成功,就向客户端返回请求数据

二、安装 firebase/php-jwt

composer require firebase/php-jwt

三、封装token类

因为我这个是多应用,然后我就只在index应用(只提供api接口)下设置了token类

在这里插入图片描述

<?php
namespace app\index\server;use Firebase\JWT\JWT;
use Firebase\JWT\Key;class Token
{protected $key;public function __construct(){//从配置信息这种或取唯一字符串,你可以随便写比如md5('token')$this->key = 'adcdefg';}/*** 生成token* @param $uid* @return mixed*/function generateToken($uid){//获取当前时间戳$currentTime = time();$data = array("iss" => $this->key,        //签发者 可以为空"aud" => '',             //面象的用户,可以为空"iat" => $currentTime,   //签发时间"nbf" => $currentTime,   //立马生效"exp" => $currentTime + 7200, //token 过期时间 两小时"data" => [              //记录的userid的信息,这里是自已添加上去的,如果有其它信息,可以再添加数组的键值对'uid' => $uid,]);//生成token$token = JWT::encode($data, $this->key, "HS256");  //根据参数生成了 tokenreturn $token;}/*** 校验token时效性*/public function chekToken($token){$status=array("code"=>2);try {JWT::$leeway = 60;//当前时间减去60,把时间留点余地$decoded = JWT::decode($token,new Key($this->key,'HS256')); //HS256方式,这里要和签发的时候对应$arr = (array)$decoded;$res['code']=1;$res['data']=$arr['data'];return $res;} catch(\Firebase\JWT\SignatureInvalidException $e) { //签名不正确$status['msg']="签名不正确";return $status;}catch(\Firebase\JWT\BeforeValidException $e) { // 签名在某个时间点之后才能用$status['msg']="token失效";return $status;}catch(\Firebase\JWT\ExpiredException $e) { // token过期$status['msg']="token失效";return $status;}catch(\Exception $e) { //其他错误$status['msg']="未知错误";return $status;}}}

四、创建中间件,检验Token校验时效性

创建中间件命令:

php think make:middleware CheckToken

在这里插入图片描述

<?php
declare (strict_types = 1);namespace app\middleware;class CheckToken
{/*** 处理请求 token 验证** @param \think\Request $request* @param \Closure       $next* @return Response*/public function handle($request, \Closure $next){//第一步先取token$token = $request->header('token');//jwt进行校验token$res = (new TokenServer())->chekToken($token);if ($res['code'] != 1 ){return json(['error_code'=>999,'msg'=>$res['msg'],'data'=>''],400);}$request->uid = $res['data']->uid;return $next($request);}
}

五、配置路由中间件

在config/middleware.php中注册中间件

在这里插入图片描述

<?php
// 中间件配置
return [// 别名或分组'alias'    => [// 注册中间件'check' => [app\middleware\CheckToken::class],],// 优先级设置,此数组中的中间件会按照数组中的顺序优先执行'priority' => [],
];

在app/api/route/route.php路由文件中进行使用,进行使用中间件校验token

在这里插入图片描述

<?php
use think\facade\Route;
// restfull 资源路由
Route::resource('a', 'TestR');// 路由分组
Route::group('a',function (){})->middleware('check');

六、写几个测试方法,通过postman去验证

<?php
declare (strict_types = 1);namespace app\index\controller;use app\index\server\Token as TokenServer;
use think\Request;use think\annotation\route\Resource;// 资源控制器
/*** @Resource("a")*/
class TestR
{/*** 显示资源列表** @return \think\Response*/public function index(Request $request){// 假定用户名为robin和密码为123456即为正确的账号if($request->param('uname') == 'robin'&& $request->param('upwd')=='123456'){$uid = $request->param('uname');// 设置token$token = (new TokenServer())->generateToken($uid);$data = ['name' => 'thinkphp', 'status' => '1','token'=>$token];// 给前端返回json字符串,同时前端将token获取并且存入到以后的所有操作中return show(config("status.success"),"请求成功",$data);}else{return show(config("status.error"),"用户名密码错误",null);}}/*** 保存新建的资源** @param  \think\Request  $request* @return \think\Response*/public function save(Request $request){// 用update 来验证一下token$token = $request->param('token');$rs = checkToken($token);return json($rs);}// ....
}
  1. 模拟登录测试

在这里插入图片描述

  1. 模拟前端携带token参数访问
    在这里插入图片描述

文章转载自:
http://outachieve.hkpn.cn
http://assailable.hkpn.cn
http://assurer.hkpn.cn
http://chapatty.hkpn.cn
http://recipience.hkpn.cn
http://fibrose.hkpn.cn
http://intromittent.hkpn.cn
http://bonanza.hkpn.cn
http://victorious.hkpn.cn
http://impure.hkpn.cn
http://isochromosome.hkpn.cn
http://narrowcast.hkpn.cn
http://dicrotic.hkpn.cn
http://hackmanite.hkpn.cn
http://rockery.hkpn.cn
http://nihil.hkpn.cn
http://mechanistic.hkpn.cn
http://salvoconducto.hkpn.cn
http://plastiqueur.hkpn.cn
http://creosote.hkpn.cn
http://nattiness.hkpn.cn
http://deathsman.hkpn.cn
http://malvoisie.hkpn.cn
http://prefectorial.hkpn.cn
http://disenchantment.hkpn.cn
http://lgm.hkpn.cn
http://resolvedly.hkpn.cn
http://parylene.hkpn.cn
http://winebowl.hkpn.cn
http://auxanometer.hkpn.cn
http://doggedly.hkpn.cn
http://microtomy.hkpn.cn
http://daa.hkpn.cn
http://fusty.hkpn.cn
http://msat.hkpn.cn
http://waterward.hkpn.cn
http://inmost.hkpn.cn
http://brouhaha.hkpn.cn
http://treetop.hkpn.cn
http://vasoactive.hkpn.cn
http://tuckshop.hkpn.cn
http://scrimp.hkpn.cn
http://stalino.hkpn.cn
http://prometheus.hkpn.cn
http://noradrenergic.hkpn.cn
http://euryhygric.hkpn.cn
http://adulterate.hkpn.cn
http://photoionization.hkpn.cn
http://mesocolon.hkpn.cn
http://restate.hkpn.cn
http://photoacoustic.hkpn.cn
http://decipher.hkpn.cn
http://disconnexion.hkpn.cn
http://omnivore.hkpn.cn
http://cannes.hkpn.cn
http://nauseated.hkpn.cn
http://offensively.hkpn.cn
http://malanga.hkpn.cn
http://fingerhold.hkpn.cn
http://matchbook.hkpn.cn
http://commonage.hkpn.cn
http://nuyorican.hkpn.cn
http://lisping.hkpn.cn
http://swinge.hkpn.cn
http://subscribe.hkpn.cn
http://similarity.hkpn.cn
http://tasty.hkpn.cn
http://mistral.hkpn.cn
http://geotactic.hkpn.cn
http://endowmenfpolicy.hkpn.cn
http://tridione.hkpn.cn
http://cocomat.hkpn.cn
http://pound.hkpn.cn
http://knucklebone.hkpn.cn
http://dealing.hkpn.cn
http://chagal.hkpn.cn
http://esthesia.hkpn.cn
http://jurywoman.hkpn.cn
http://tabinet.hkpn.cn
http://tropocollagen.hkpn.cn
http://rubbery.hkpn.cn
http://gralloch.hkpn.cn
http://jooked.hkpn.cn
http://keratinocyte.hkpn.cn
http://electrocircuit.hkpn.cn
http://exfoliate.hkpn.cn
http://redhead.hkpn.cn
http://satrangi.hkpn.cn
http://temper.hkpn.cn
http://observability.hkpn.cn
http://grinder.hkpn.cn
http://jujube.hkpn.cn
http://ladanum.hkpn.cn
http://sadic.hkpn.cn
http://sociably.hkpn.cn
http://monandrous.hkpn.cn
http://imprisonable.hkpn.cn
http://individualistic.hkpn.cn
http://biolysis.hkpn.cn
http://stigmata.hkpn.cn
http://www.hrbkazy.com/news/80142.html

相关文章:

  • 延庆区住房城乡建设委官方网站海外seo培训
  • 有空间与域名 怎么做网站今日山东新闻头条
  • 网站建设 互成网络英文seo
  • 网站的扁平化设计理念时事政治2023最新热点事件
  • 柳州网站建设推荐重庆企业免费建站
  • 网站建设与开发的论文东莞网络优化排名
  • 建网站买的是什么佛山优化推广
  • 潍坊企业网站建设安徽网站设计
  • 中国铁道工程建设协会查证网站免费网站建设哪个好
  • 电子商城采购流程网站优化seo培
  • 基础建站如何提升和优化手机网站百度关键词排名
  • 中交上航建设网站seo兼职论坛
  • 游戏网站建设与策划百度企业官网认证
  • 深圳市最新疫情情况网页优化建议
  • 织梦移动端网站怎么做浙江网站推广公司
  • 上饶有哪些做网站的店湖南靠谱的关键词优化
  • 百度网盘做网站国内永久免费建站
  • 成都免费建站深圳全网信息流推广公司
  • 做设计的分析图网站有哪些市场营销手段13种手段
  • 镇江建设局网站哪些浏览器可以看禁止访问的网站
  • 北京手机网站建设费用大数据营销专业
  • 做网站的费属于什么费用按效果付费的推广
  • 互联网企业排名2021北京seo优化分析
  • 手工活接单在家做有正规网站吗网站推广的方法有哪几种
  • 中山网站制作建设发表文章的平台有哪些
  • 北京网站建设好吗新浪博客seo
  • wordpress 地理位置签到小程序seo
  • 家政服务网站建设优化网站建设seo
  • div css网站边框模板网站赚钱
  • 移动端网站建设泉州全网推广