tp6+jwt实现token生成及验证,tp+vue请求接口header中加入token报跨域错误解决

TP6 使用jwt生成token加密解密 完成 这样在任何需要使用的地方世界输入 signToken(用户数据)直接就返回token了 解密也是同样的道理 另外其中上面几步中如果出现任何错误建议直接百度 php-jwt可能会因为版本不对不能使用百度下载其他版本的也一样逻辑步骤基本都一样。 阅读详情

生成、验证token

原文:TP6 JWT Token 生成 控制器使用 中间件使用

  1. 使用compose安装jwt类 (在cmd中切换至tp项目文件夹中运行一下命令,运行成功后会在vendor目录中生成firebase)
composer require firebase/php-jwt
  1. 在app/common.php引入JWT类,创建生成token、验证token方法
// 应用公共文件
use Firebase\JWT\JWT;
use Firebase\JWT\Key;
use Firebase\JWT\SignatureInvalidException;
use Firebase\JWT\ExpiredException;
use Firebase\JWT\BeforeValidException;

/**
 * 生成token
 * $uid 输入用户openid&&id
 */
 
if (!function_exists('signToken')) {
	//生成验签
	function signToken($uid)
	{
		$key = '!@#$%*&';         //这里是自定义的一个随机字串,应该写在config文件中的,解密时也会用,相当    于加密中常用的 盐  salt
		$token = array(
			"iss" => '',         	//签发者 可以为空
			"aud" => '',         	//面象的用户,可以为空
			"iat" => time(),      	//签发时间
			"nbf" => time() + 3,      	//在什么时候jwt开始生效  (这里表示生成100秒后才生效)
			"exp" => time() + 2000, //token 过期时间
			'data' => $uid			//记录的userid的信息,这里是自已添加上去的,如果有其它信息,可以再添加数组的键值对
		);
		$jwt = JWT::encode($token, $key, "HS256");  //根据参数生成了 token
		return $jwt;
	}
}
/**
 * 验证token
 * $token 生成的token值
 */
 
if (!function_exists('checkToken')) {
	//验证token
	function checkToken($token)
	{
		$key = '!@#$%*&';
		$status = array("code" => 2);
 
		try {
			JWT::$leeway = 60; //当前时间减去60,把时间留点余地
			$decoded = JWT::decode($token, new Key($key, 'HS256')); //HS256方式,这里要和签发的时候对应
			$arr = (array)$decoded;
			$res['code'] = 1;
			$res['data'] = $arr['data'];
			return $res;
		} catch (SignatureInvalidException $e) { //签名不正确
			$status['msg'] = "签名不正确";
			return $status;
		} catch (BeforeValidException $e) { // 签名在某个时间点之后才能用
			$status['msg'] = "token未生效";
			return $status;
		} catch (ExpiredException $e) { // token过期
			$status['msg'] = "token失效";
			return $status;
		} catch (Exception $e) { //其他错误
			$status['msg'] = "未知错误";
			return $status;
		}
	}
}
  1. 在控制器中使用
$openid = '123123123';
$token = signToken($openid); // 生成token

// 验证
$token = request() -> header('token');
$res = checkToken($token); // 验证token
if($res['code'] == 1){
	return '验证通过';
}else{
	return $res['msg'];
}

tp+vue项目中axios发送请求时在header中携带token报跨域错误解决方法

转自:thinkphp6解决vue跨域问题
原文链接:thinkphp6解决跨域 - 简书

  1. 在app目录下新建middleware/AllowCrossDomain.php
<?php
declare (strict_types = 1);
 
namespace app\middleware;
 
use Closure;
use think\Config;
use think\Request;
use think\Response;
 
class AllowCrossDomain
{
 
    protected $cookieDomain;
 
    // header头配置
    protected $header = [
        'Access-Control-Allow-Credentials' => 'true',
        'Access-Control-Max-Age'           => 1800,
        'Access-Control-Allow-Methods'     => 'GET, POST',
        'Access-Control-Allow-Headers'     => 'Authorization, Content-Type, If-Match, If-Modified-Since, If-None-Match, If-Unmodified-Since, X-CSRF-TOKEN, X-Requested-With,token',
    ];
 
 
    /**
     * AllowCrossDomain constructor.
     * @param Config $config
     */
    public function __construct(Config $config)
    {
        $this->cookieDomain = $config->get('cookie.domain', '');
    }
 
    /**
     * 允许跨域请求
     * @access public
     * @param Request $request
     * @param Closure $next
     * @param array   $header
     * @return Response
     */
    public function handle($request, Closure $next, ?array $header = [])
    {
        $header = !empty($header) ? array_merge($this->header, $header) : $this->header;
 
        if (!isset($header['Access-Control-Allow-Origin'])) {
            $origin = $request->header('origin');
 
            if ($origin && ('' == $this->cookieDomain || strpos($origin, $this->cookieDomain))) {
                $header['Access-Control-Allow-Origin'] = $origin;
            } else {
                $header['Access-Control-Allow-Origin'] = '*';
            }
        }
 
        return $next($request)->header($header);
    }
}
  1. 在app/middleware.php中新加以下内容
    在这里插入图片描述
<?php
// 全局中间件定义文件
return [
    // 全局请求缓存
    // \think\middleware\CheckRequestCache::class,
    // 多语言加载
    // \think\middleware\LoadLangPack::class,
    // Session初始化
    \think\middleware\SessionInit::class,
    //跨中间件
    // \think\middleware\AllowCrossDomain::class,
    \app\middleware\AllowCrossDomain::class
];

vue+axios发送请求时设置header信息

// get
axios.get(url, {headers:{token: '123123'}})

// post
axios.post(url, data, {headers:{token: '123123'}})
ThinkPHP6使用JWT+中间件实现Token验证 thinkphp6中使用JWT生成、验证Token的保姆级教程,理论+实战,跟着步骤来,轻松学会使用JWT~ 阅读详情

相关推荐

Spring Boot+Vue音乐网站实战:从架构到部署的全栈开发指南

在实际 Java Web 项目中,一个完整的音乐网站涉及的技术栈远比简单的增删改查复杂。它需要处理音频文件的存储与播放、用户交互的实时性、前后端数据的分离与协作,以及后台管理的便捷性。对于希望深入理解 Spring Boot 和 Vue 如何协同工作,并构建一个具备完整业务闭环项目的开发者来说,一个前后端分离的音乐网站是一个绝佳的实战选择。本文将围绕一个典型的 Spring Boot + Vue 音乐网站项目,从零开始,手把手带你理解其核心架构、搭建开发环境、配置关键模块、实现核心功能,并最终部署运行。无论

chulilang8944的博客 451

tp6/thinkphp6接口api开发/前后端分离/电商实战

本课程主要是用了vue前端  tp6作为后端提供api  开发的移动端仿京东商城应用。 学会使用tp6框架  对api接口进行jwt  token认证 使用阿里短信接口发送短信,用户注册登录 学会配置使用微信 支付宝h5支付 学会调用快递接口  用户查询物流信息

Qwen3.6-27B部署实战:显存优化、vLLM 0.6.4与AWQ量化全指南

大语言模型推理部署的核心在于平衡显存占用、延迟与精度——这涉及模型量化(如AWQ)、推理引擎(如vLLM)、硬件适配(如BF16支持、CUDA Graph)等关键技术环节。Qwen3.6-27B作为面向长上下文与工具调用优化的新代际模型,其真实显存需求远超传统27B认知,需结合KV Cache压缩、RoPE缩放适配与CPU指令集(AVX-512)协同优化。在中小团队落地场景中,它广泛应用于合同审查、客服系统与研报生成等中文垂直任务,对4090单卡部署提出明确配置边界与避坑要点。本文聚焦工程可复现的部署链路,

dianqi0560的博客 642

前端ajax带token跨域问题,后端有拦截器

1、尝试了在controller上加了@CrossOrigin标签,也尝试加filter因为有拦截器先后顺序,单。 2、尝试在后端加上请求响应头允许所有跨域,然后放行,还是没用,没意思到options被拦截。 3、发现options被拦截,拦截器放行所有options请求,并加上允许跨域访问请求头后解决。 ...

wflsyf的博客 1271

SOAP与RESTful技术选型决策地图:从协议哲学到生产避坑

Web Services是分布式系统通信的基础范式,其核心在于协议层契约设计与资源交互逻辑。SOAP基于WSDL定义刚性、可验证、安全内建的XML消息契约,适用于高确定性、强审计要求的企业集成场景;RESTful则依托HTTP方法、状态码与URI资源模型,强调无状态、缓存友好与语义化演进,更适合松耦合、快速迭代的互联网架构。二者差异本质是系统协作哲学之分——前者重‘确定性保障’,后者重‘演化适应性’。在银行对接、政务系统、微服务API等真实场景中,选型需综合考量契约约束力、安全合规性(如WS-Securit

weixin_34331102的博客 375

【信息科学与工程学】计算机科学与自动化——第一百九十八篇 高并发高可用的知识点01

以上补充约 110 行,涵盖分布式协调、服务网格细节、数据库高级特性、性能分析工具、混沌工程、安全渗透、合规审计、研发效能、新兴技术、架构模式、实用工具及经典论文。涵盖数据库索引与锁、NoSQL、前端性能、安全攻防、压测工具深入、监控深入、云原生存储、服务治理扩展、代码质量、DevOps 文化、行业标准、软技能及未来趋势。好的,继续补充更多高并发、高可用、高可靠的知识与技术,涵盖更深层的数据库内部机制、分布式事务、服务治理、运维自动化、安全与前沿技术等领域。

weixin_49199313的博客 732

thinkphp6 使用 jwt 生成 token 中间件验证token

一、跨域认证的问题 互联网服务离不开用户认证。一般流程是下面这样。 1、用户向服务器发送用户名和密码。 2、服务器验证通过后,在当前对话(session)里面保存相关数据,比如用户角色、登录时间等等。 3、服务器向用户返回一个 session_id,写入用户的 Cookie。 4、用户随后的每一次请求,都会通过 Cookie,将 session_id 传回服务器。 5、服务器收到 session_id,找到前期保存的数据,由此得知用户的身份。 这种模式的问题在于,扩展性(scalin.

codeFly 4522

基于TP6与Uni-app的婚恋平台源码开发与部署避坑指南

在社交产品开发中,PHP后端与跨端框架的组合是快速搭建MVP的高效路径。ThinkPHP 6(TP6)作为国内主流PHP框架,凭借多应用模式与低部署门槛,常被用于构建包含API接口、后台管理及会员订单的业务骨架;Uni-app则通过条件编译实现小程序、H5、App三端代码复用。两者结合之下,开发者能够低成本完成婚恋相亲平台的核心功能,如JWT用户鉴权、实名认证状态机、滑卡匹配推荐、基于WebSocket的即时聊天等。同时,实际落地需关注跨域处理、Nginx伪静态、消息守护进程及短信防刷等工程化问题。本文以婚

weixin_34416649的博客 410

tp6+jwt+vue验证token

如果是全局中间件,不是就不用理,在app/middleware.php新加以下内容,Session可以不开不影响。(在cmd中切换至tp项目文件夹中运行命令,会自动创建app/middleware/Check.php文件)(在cmd中切换至tp项目文件夹中运行一下命令,运行成功后会在vendor目录中生成firebase)2.在app/common.php引入JWT类,创建生成token、验证token方法。(Check.php中间件的内容直接复制粘贴,包含了处理跨越请求)3.创建中间件,建议用。

weixin_43453621的博客 1145

Apache NiFi新手必看:从零开始的数据流设计入门教程(含实战案例)

本文为Apache NiFi新手提供从零开始的数据流设计入门指南。通过实战案例,详细讲解了如何利用这一强大的数据采集工具,以可视化拖拽方式构建自动化数据流,实现从文件监控、内容处理到数据入库的全流程,并涵盖核心概念、环境搭建及生产环境调优要点。

weixin_29066781的博客 149

揭秘N531:这颗不到2毛钱的国产栅极驱动器,如何成为功率开关的“全能搭档”?

本文深入解析了国产栅极驱动器N531如何成为功率开关的“全能搭档”。针对MOSFET和IGBT等电压驱动器件在实际应用中需要大电流实现快速开关的核心痛点,N531凭借±500mA的强劲驱动能力、宽电压供电及高兼容性,有效降低开关损耗,提升系统效率与可靠性。文章通过实战案例与设计指南,阐述了这颗高性价比芯片在简化设计、降低成本方面的显著优势。

z5a6b的博客 620

基于ThinkPHP 5+Vue.js+MySQL的个人记账管理系统毕业设计实战

Web开发的核心在于理解前后端分离架构与数据库交互原理。通过将后端框架、前端框架与数据库技术栈有机结合,开发者能够构建具备完整业务逻辑和数据持久化能力的应用系统。这种技术组合不仅体现了现代Web开发的主流工程实践,更能有效解决实际业务场景中的数据管理需求。以个人记账管理系统为例,其技术价值在于串联用户认证、数据CRUD操作与可视化统计等核心功能模块,为初学者提供了一个从需求分析到生产部署的完整项目实践路径。本文聚焦ThinkPHP 5作为RESTful API服务端、Vue.js构建响应式前端界面、MySQ

weixin_34228387的博客 572

大尺寸智能车的CAN驱动控制器制作(一)

本驱动板使用8个半H桥BTS7960驱动,使用CAN接口于车体主控制器通讯,最大承受电压48V 电流20A ,主控为STM32F103VET6,电机控制频率为18KHz,CAN通讯芯片为TJA1042T,全驱动板6-24V宽电压供电,采用24V降5V,5V降3.3V的方案供电,其中经过AMS1117作为降压芯片,可以有效降低主控损毁几率。在这里可以看到555电机相比于其他电机的功率大很多,所以需要大功率的电机驱动,在以往的电机驱动选型中选择了TB6612,L298N等小功率电机驱动。

技术的力量能够改变世界 569

基于ThinkPHP和Vue的房产销售管理系统设计与实现

在现代企业管理系统中,前后端分离架构已成为主流开发范式。ThinkPHP v6.0.12 LTS作为国内广泛使用的PHP框架,提供了稳定可靠的后端基础;而Vue的安装与环境配置则是前端工程化的重要起步。两者结合,能够实现清晰的API接口设计与高效的组件化界面。本文从技术原理到工程实践,阐述如何利用这套组合构建房产销售信息系统,覆盖房源管理、客户跟进、带看与成交等核心业务闭环,并探讨JWT认证、跨域代理及Nginx部署等关键问题,为同类业务系统开发提供可参考的落地路径。

weixin_33787529的博客 208

AMP架构下的核间通信:RPMSG与共享内存原理详解

本文以RK3568等异构多核硬件为例,深入浅出解析了AMP架构下核间通信的核心逻辑,阐明RPMSG并非替代共享内存,而是以共享内存为数据载体、硬件信箱为中断通知工具、VirtIO为数据管理规则,构建的标准化高层协议与框架,为开发者提供简洁API,实现不同操作系统核心间高效通信。

qq_61335271的博客 2049

LoRaWAN协议-物理层(PHY)详解

目录 1 前言 2 物理层包格式 2.1 LoRa调制 2.2 FSK调制 2.3 LR-FHSS 3 Uplink 4 Downlink 1 前言 如图所示,LoRaWAN是一种开放式网络协议,可提供由LoRa联盟标准化和维护的安全双向通信,移动性和本地化服务。该协议做为MAC层,属于数据链路层。其物理层(PHY)实现与其他设备的通信,目前物理层支持LoRa,FSK,LR-FHSS调制。 下图的PHY只标准了LoRa调制,是因为LoRaWAN实际应用中基...

只想.静静的博客 8773

Spring Boot+Vue全栈音乐网站实战:从零部署到核心模块解析

前后端分离架构是现代Web应用开发的主流模式,其核心原理是将用户界面(前端)与业务逻辑和数据(后端)解耦,通过RESTful API进行通信。这种架构的技术价值在于提升了开发效率、便于团队协作,并增强了应用的可维护性和可扩展性。在工程实践中,它广泛应用于各类管理系统、内容平台和社交应用。本文聚焦于一个典型的全栈实战项目——音乐网站,深入探讨了如何整合Spring Boot与Vue技术栈。项目涵盖了用户认证、多媒体处理等核心模块,并详细解析了JWT认证、Vuex状态管理等关键技术点的实现,为开发者提供了一个从

weixin_34416649的博客 283

地图自定义编码CSV转换成ini文件

创 建 schema.ini 文件:有时,当您尝试使用 .csv 文件将自定义地理信息导入 Tableau 时,您可能会看到“无法使用.csv,因为它不包含唯一列”错误消息。这是因为您的 .csv 文件可能包含数值数据,例如数值邮政编码。对于新的地理角色,Tableau 将只接受文本字段。但是,您可以创建一个 schema.ini 文件,以指示 Tableau 应将您要导入的数值字段视为文本字段。...

wenyusuran的专栏 1975

基于ThinkPHP5与Vue.js的雨具购物平台全栈开发实战

Web应用开发的核心在于前后端分离架构,它通过清晰的职责划分提升了开发效率和系统可维护性。其原理是将用户界面与业务逻辑解耦,前端负责视图渲染与用户交互,后端则专注于数据处理与API提供,两者通过HTTP协议(通常使用JSON格式)进行通信。这种架构的技术价值在于支持团队并行开发、技术栈灵活选型以及服务端的多客户端适配。在电商、管理后台等复杂交互场景中,前后端分离已成为主流实践。本文以ThinkPHP5后端框架和Vue.js前端框架为例,结合MySQL数据库,详细演示如何从零构建一个功能完整的雨具购物平台。内

weixin_33795743的博客 290

KNN算法

其原理是在给定的数据集中,根据某个距离度量方法,将测试数据与已知数据集中的所有数据进行距离计算,然后选取K个距离最近的数据作为测试数据的邻居,根据邻居的类别进行投票,将测试数据分类到得票最多的类别中。总之,KNN算法是一种简单而有效的分类方法,它不需要对数据进行训练,可以适用于多种数据类型和应用场景,并且可以通过调整K值或距离阈值等参数来控制算法的复杂度和性能。,KNN算法需要找到K个距离测试样本最近的训练样本,计算它们的类别,并将测试样本归入到得票最多的类别中。则取值为1,否则为0,表示邻居中属于类别。

优快云XXCQ的博客 2632

4、LTE无人机认证:保障通信安全的新方案

本文针对LTE网络中无人机通信存在的安全风险,提出了一种基于可信第三方GCS的新型认证协议。该协议通过非对称加密和哈希函数保护IMSI等敏感信息,防止身份泄露、中间人攻击、拒绝服务攻击和位置追踪等威胁。利用Scyther工具对协议进行形式化分析,验证了其在机密性、一致性和活性等方面的安全属性,证明该方案能有效提升无人机在LTE网络中的通信安全性与隐私保护能力。

pink的博客 61

ThinkPHP+Vue前后端分离选课成绩管理系统设计与实现全解析

在高校教务场景中,学生选课与成绩管理是典型的业务密集型系统,涉及复杂的权限控制、数据一致性和并发处理。前后端分离架构已成为当前企业级应用的主流实践,后端通过RESTful API提供数据服务,前端采用Vue进行页面交互与状态管理,二者通过JWT认证机制实现安全通信。理解数据库的事务锁与唯一索引设计,能有效解决选课超卖和重复提交问题,而角色权限的中间件统一管控则是防止越权操作的关键。这类系统的技术价值不仅在于功能实现,更体现在工程化部署能力上,如Nginx反向代理解决跨域、history路由刷新404等实战问

weixin_33889665的博客 379

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

Spring Boot 3 + Vue 3打造科技文献推荐系统全栈实战

推荐系统是解决信息过载问题的核心技术,通过分析用户行为数据挖掘潜在兴趣,实现个性化内容分发。协同过滤作为其中应用最广泛的算法,基于用户相似度或物品相似度完成推荐预测,是构建高效推荐引擎的关键。在实际工程中,推荐系统需要与主流开发框架深度整合,以支撑完整的业务链路。以科技文献推荐为例,系统需处理海量文献数据并实时响应用户行为,对前后端架构和算法落地均有较高要求。基于Spring Boot 3与Vue 3构建前后端分离的文献推荐系统,从技术选型、数据库设计到协同过滤与混合推荐算法实现,再到Nginx部署,完整呈

weixin_33957648的博客 431

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

从0到1构建毕业论文选题系统:双框架后端+uniapp小程序实战

在前后端分离与多端适配日益普及的当下,业务系统的开发不仅要求功能完整,更需兼顾跨平台运行与安全认证。PHP作为服务端主力语言,ThinkPHP与Laravel分别凭借轻量易用和现代生态成为经典选择;uniapp则以一套Vue代码编译到微信小程序、H5等多端,大幅降低重复开发成本。理解接口请求封装、JWT登录态维持、路由配置等基础原理,是构建稳定系统的前提,而状态机设计与分配算法则决定了核心业务逻辑的正确性。这类技术组合广泛适用于高校毕业设计选题、教务管理等场景,常涉及多角色协同与资源冲突处理。以一个真实项目

weixin_32715349的博客 214

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

运营后台系统设计:从CRUD到运营操作系统

运营后台不是通用管理系统的简单复刻,而是面向业务动作的实时协同平台。其核心在于将运营高频操作(如活动配置、数据监控、效果归因)转化为可编排、可追溯、可灰度的技术能力。通过事件溯源保障配置变更一致性,插件化架构支撑48小时新玩法上线,场景化权限沙盒解决跨类目管控难题,指标管道驱动实时看板自动预警。这类系统已广泛应用于电商中台、SaaS服务商及金融营销场景,成为支撑百万级订单与高并发运营动作的关键基础设施。本文聚焦‘运营提效’与‘业务可配’两大热词,拆解大厂落地实践。

weixin_34008933的博客 556

JWT 生成及验证

1、composer安装 composer require lcobucci/jwt 3.3/ 2、实例化类 <?php namespace tools\jwt; //use 到你自己安装的目录,每个人的可能不同 use Lcobucci\JWT\Builder; use Lcobucci\JWT\Parser; use Lcobucci\JWT\Signer\Hmac\Sha256; us...

weixin_44540711的博客 502
上一篇: vue登录密码强度校验
下一篇: tp6+vue实现非对称加密登录
if时光重来
博客等级 码龄8年 248粉丝 217原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值