Token 验证函数 生成:TP6 JWT Token 生成 控制器使用 中间件使用_Bug_Free_的博客-CSDN博客

0x01        通过命令行指令快速生成中间件

php think make:middleware CheckToken

这个指令会 app/middleware目录下面生成一个Check中间件。

<?phpnamespace app\middleware;class CheckToken
{public function handle($request, \Closure $next){if ($request->param('name') == 'think') {return redirect('index/think');}return $next($request);}
}

中间件的入口执行方法必须是handle方法,而且第一个参数是Request对象,第二个参数是一个闭包。

修改上面这个文件app/middleware/CheckToken.php

<?phpdeclare(strict_types=1);namespace app\middleware;// 数据库
use app\model\Admins;class CheckToken
{/*** 处理请求** @param \think\Request $request* @param \Closure       $next* @return Response*/public function handle($request, \Closure $next){// 获取token$token = $request->header('token');// 验证是否存在tokenif (empty($token)) {return json(['msg' => 'error', 'data' => 'token为空']);} else {$admins_token =  Admins::where('token', $token)->find();// JWT进行校验token$res = checkToken($token);// token是否存在数据库中if (empty($admins_token)) {return json(['msg' => 'error', 'data' => 'token不合法']);// token是否正确if ($res['code'] != 1) {return json(['msg' => 'error', 'data' => 'token验证失败']);}}}return $next($request); //返回请求数据本身}
}

0x02        控制器中间件使用

['except' => 'login']] 可以剔除不需要验证token的函数 

    protected $middleware = [\app\middleware\CheckToken::class => ['except' => 'login']];

0x03        如果全局应用验证token中间件

在\app\middleware.php文件中添加

<?php
// 全局中间件定义文件
return [// 全局请求缓存// \think\middleware\CheckRequestCache::class,// 多语言加载// \think\middleware\LoadLangPack::class,// Session初始化// \think\middleware\SessionInit::class// 注册中间件\app\middleware\CheckToken::class// 跨域// \think\middleware\AllowCrossDomain::class
];

0x04        如果需要跨域接收token

TP6 中间件开启跨域 token_Bug_Free_的博客-CSDN博客

tp6 使用中间件验证token相关推荐

  1. JWT生成token与中间件验证

    一.安装JWT扩展 建议使用composer安装 方便 快捷,切到项目目录下运行以下命令 composer require firebase/php-jwt 二.使用 生成token ,这里是把用户u ...

  2. ThinkPHP6+JWT 中间件校验Token时效性

    一.涉及到的知识点 接口验签安全机制封装到服务层 接口调用须使用验签 接口验证封装到中间件 二.下载ThinkPHP6.0框架 如果你是第一次安装的话,在命令行下面,切换到你的WEB根目录下面并执行下 ...

  3. token 过期刷新令牌_Passport 验证 Token 方法和持续刷新过期时间问题

    项目介绍 最近在做一个后台项目,目标是登录后无操作30分钟后自动过期,一直操作的情况下,过期时间一直刷新(目前不考虑每次操作修改对数据库的压力) token有效期检测 操作后自动刷新过期时间 管理员手 ...

  4. tp6登录JWT获取token并认证

    1.命令创建jwt插件 composer require lcobucci/jwt 3.3 在模块中创建extend/tools/jwt/Token.php    <?phpnamespace ...

  5. 【Flask项目2】生成token和验证token(11)

    用户登录 用户登录的功能我们使用 Json Web Token(JWT) 来为登录用户生成token令牌,并返回给客户端,客户端有了令牌之后,每次访问服务器,都携带Token,后台经过验证就能知道当前 ...

  6. Spring Cloud中Feign如何统一设置验证token

    前面我们大致的聊了下如何保证各个微服务之前调用的认证问题 Spring Cloud中如何保证各个微服务之间调用的安全性 Spring Cloud中如何保证各个微服务之间调用的安全性(下篇) 原理是通过 ...

  7. 微信公众号验证Token

    前几天开发了微信公众号,趁今天有时间,总结一下. 注意几点: 1.服务器地址URL这是要配置你的域名加你验证Token的接口路径,记住,是完整路径!.如果是通过了穿透,那么就是127.0.0.1/端口 ...

  8. jwt生成token和验证token以及获取playload的数据,实现token拦截

    jwt实现流程: 1.添加依赖: <dependency><groupId>com.auth0</groupId><artifactId>java-jw ...

  9. 微信开发 新浪SAE开发平台 验证Token 一直失败

    本人刚刚学习微信开发,在微信平台中修改服务器设置时,使用微信Demo的php,刚开始一直验证token 失败 解决办法 :在echo $echoStr;之前添加header('content-type ...

最新文章

  1. python在财务上的应用-python 与财务
  2. 【译】A Note On Charity Through Marginal Price Discrimination
  3. C++ STL string字符串内容修改和替换
  4. 文档02_JavaScript
  5. Process p = new Process();
  6. C++ stdio.h详解
  7. 无线通信原理与技术 实验二  CDMA通信系统仿真
  8. Sprint周期项目开发总结
  9. 动手实践 用 easyboot 制作N合一光盘
  10. vanta.js的使用(前端网站动态背景)
  11. 计算机毕业设计ssm文学阅读平台
  12. SQLServer修改表数据
  13. supervisor服务
  14. 【CNC——第12篇】用Turbo PMAC驱动一个松下交流伺服电机以及I变量知识
  15. php 0xef 0xbb 0xbf,utf-8编码的csv文件,用excel打开乱码,解决办法,在输出前加 0xEF,0xBB,0xBF三个char...
  16. oracle—pl/sql
  17. [gdc13]《孤岛危机3》渲染技术
  18. 崔希凡JavaWeb笔记day10~day12(2016年8月22日11:59:18)
  19. Kaldi单音子建模
  20. IP 地址解析与子网划分教程

热门文章

  1. 什么牌子的蓝牙耳机音质最好?音质不错的蓝牙耳机推荐
  2. java 汉明距离_算法:hamming 海明距离(汉明距离):Java实现
  3. 企业站推广:100种实用的推广方法(二)
  4. Adobe Audition提示 音频输入的采样率与输出设备不匹配——问题解决
  5. ASPICE 入门知识
  6. 思维导图怎么画?怎么画出简单又漂亮的思维导图
  7. pip install suds
  8. php 拼接mysql 语句_MySQL执行拼接字符串语句实例
  9. Idea中使用Vim
  10. shader Blend混合模式讲解