react中关于token的两个场景

场景一

在react项目中,路由跳转前需判断是否存在token,有则正常跳转,没有则去登录页面。

实现

这里使用的是localstorage存储token(也可以使用redux管理token)

// src\components\AuthRoute.js
// 封装高阶组件
// 有token正常跳转 无token去登录页
import { Navigate } from 'react-router-dom'export function AuthRoute({ children }) {const token = localStorage.getItem('userToken_key')if (token) {return <>{ children}</>} else {return <Navigate to={'/login'} replace />}
}
// src\router\index.js
import Login from '../page/Login'
import Layout from '../page/Layout'import { createBrowserRouter } from 'react-router-dom'
import { AuthRoute } from '../components/AuthRoute'const router = createBrowserRouter([{path: '/login',element:<Login/>},{path: '/',element:<AuthRoute><Layout/></AuthRoute>}
])export default router

场景二

对于每个axios请求,都需要在header添加上token数据。

实现

为实现上诉场景,直接在axios的请求拦截器中写如下代码:

//请求拦截器
instance.interceptors.request.use((config) => {const token=localStorage.getItem('userToken_key')if (token) {config.headers.Authorization = `Bearer ${token}`}return config},(err) => Promise.reject(err)
)

注意:在axios拦截器中无法使用react中的hook(以use开头的函数被称为hook),所以无法使用useSelector拿到store中的token数据。

如果本文对你有帮助,希望能得到你的点赞或收藏或关注,这是对我最好的鼓励;

如你有问题或疑惑,欢迎在评论区写下,必将努力解答;

如本文有误区,希望你不吝赐教,让我们共勉!
 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/878291.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

cesium 地形获取和生成

1.先从网上下载12.5m精度的地形,然后叠加无人机的地形数据 2.使用global mapper pro合并并导出完整的tiff 3.使用cesiumLab进行tiff的文件数据切片生成terrain格式的数据

cocos发布unity平台试玩广告失败问题

前言 关于如何输出试玩广告和平台文档中的说明就不赘述了&#xff0c;下面主要介绍在发布过程中遇到的问题。 检测不到mraid.open()或应用商店链接 提示&#xff1a; Creative pack validation failed: Your responsive playable is missing mraid.open() Your responsive p…

防御Nginx负载均衡中的拒绝服务攻击:策略与实践

拒绝服务攻击&#xff08;DoS&#xff09;和分布式拒绝服务攻击&#xff08;DDoS&#xff09;是网络安全的主要威胁之一&#xff0c;它们通过过载服务器资源或网络带宽&#xff0c;使得合法用户无法访问服务。Nginx作为一种流行的负载均衡器&#xff0c;提供了多种机制来帮助防…

第二讲__提炼

1.多态 1.定义 常见的两种情况&#xff1a; 1.继承 一个类A里面定义了一些方法&#xff0c;另一个类B继承了这个类并重写了A类的部分方法&#xff0c;主函数中用A类(父类)接收了一个B类(子类)对象&#xff0c;此时即时多态。 2.接口 一个接口A里面定义类很多抽象方法&#xff0…

从零开始学习Spring Cloud Consul:服务治理的完整解决方案

从零开始学习Spring Cloud Consul&#xff1a;服务治理的完整解决方案 在微服务架构中&#xff0c;服务的注册与发现、配置管理、负载均衡、健康检查等服务治理功能是保障系统稳定性和可扩展性的关键。Spring Cloud Consul作为Spring Cloud生态系统中与Consul集成的模块&#…

.NET HandyControl 深度解析:一个现代化的UI控件库

文章目录 前言一、选择HandyControl的原因二、如何使用HandyControl1.安装HandyControl2.使用代码例子 总结 前言 在.NET开发领域&#xff0c;UI&#xff08;用户界面&#xff09;设计的美观性和易用性对于应用程序的成功至关重要。为了帮助开发者快速构建现代化、美观且用户友…

如何使用住宅代理获取价格对比和更多选择

在购物和预订过程中&#xff0c;网站通常会根据用户的地理位置提供不同的价格和库存信息。这种做法称为地理定价或区域定价。使用静态住宅代理可以帮助用户准确查看他们想要了解的区域&#xff0c;获得更多选择和更优惠的价格。 查找更低的价格&#xff1a; 价格差异&#xff1…

CSS\JS实现页面背景气泡logo上浮效果

效果图&#xff1a; 单容器显示气泡&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Bu…

c++习题27-大整数减法

目录 一&#xff0c;题目 二&#xff0c;思路 三&#xff0c;代码 一&#xff0c;题目 输入 共2行&#xff0c;第1行是被减数a&#xff0c;第2行是减数b(a > b)。每个大整数不超过200位&#xff0c;不会有多余的前导零。 输出 一行&#xff0c;即所求的差。 样例输入1…

PostgreSQL遍历所有的表并为其创建基于某个字段的索引

完整代码 以下以"collect_time"字段为例&#xff0c;其他字段请自行全局替换 DO $$ DECLAREtable_name TEXT;index_name TEXT; BEGIN-- 遍历 public 模式下的所有表FOR table_name IN (SELECT table_nameFROM information_schema.tablesWHERE table_schema publicOR…

精密机械零件加工企业为制造业提供关键支撑

在当今高度发达的制造业中&#xff0c;精密机械零件加工企业扮演着至关重要的角色&#xff0c;以其精湛的工艺和严谨的态度&#xff0c;为制造业的各个领域提供着关键的支撑。 一、高精度制造&#xff0c;奠定产品质量基础 精密机械零件加工企业以其精湛的加工技术&#xff0c;…

android studio 设置gradle jdk

1. 左上角点击file 2. 按照如下点击&#xff1a; 3. 即可修改gradle jdk

灵办AI搜索引擎和文档总结工具

前言—— 在信息爆炸的时代&#xff0c;如何高效地获取和处理知识成为了每个人面临的挑战。随着人工智能技术的迅猛发展&#xff0c;本文将深入探讨这一创新工具的功能与优势&#xff0c;以及如何在日常生活和工作中充分利用它&#xff0c;开启智能化的信息获取新篇章。 点击…

nexus 清理 docker 镜像

下载配置 nexus-cli 看网上文档都用如下地址&#xff0c;但现在已经不能下载&#xff1a; wget https://s3.eu-west-2.amazonaws.com/nexus-cli/1.0.0-beta/linux/nexus-cli chmod x nexus-cli 在 github 上下载&#xff1a; wget https://github.com/heyonggs/nexus-cli/r…

【DSP+FPGA】基于DSP+FPGA XC7K325T与TMS320C6678的通用信号处理平台

DSP FPGA 协同处理架构板载 1 个TMS320C6678 多核DSP处理节点板载 1 片 XC7K325T FPGA处理节点板载 1 个FMC 接口板载4路SFP光纤接口FPGA 与 DSP 之间采用高速Rapid IO互联 基于FPGA与DSP协同处理架构的通用高性能实时信号处理平台&#xff0c;该平台采用1片TI的KeyStone系列多…

H5手机端调起支付宝app支付

1.调起APP页面如下 步骤 1.让后端对接一下以下文档&#xff08;手机网站支付通过alipays协议唤起支付宝APP&#xff09; https://opendocs.alipay.com/open/203/107091?pathHash45006f4f&refapi 2.后端接口会返回一个form提交表单 html&#xff1a;在页面中定义一个d…

Python从入门到进阶教程文章分享汇总~持续更新

目录 一、Python语言基础1.1 基础语法1.2 练习1.2.1 选择题1.2.2 编程题 二、web方向2.1 flask2.2 django2.3 fastapi 三、爬虫方向3.1 爬虫基础3.2 Scrapy框架3.3 反爬3.5 爬虫架构3.6 案例 四、数据分析和ai4.1 数据分析4.2 AI 五、Python常用模块&#xff0c;内置函数与方法…

2024年程序员金九银十面试宝典持续更新中.....

大家好&#xff0c;我是一位老程序员&#xff0c;很久没有更新了&#xff0c;今年大家都很不容易&#xff0c;这里有一份多年来整理的一份Java&#xff0c;大模型&#xff0c;项目管理&#xff0c;Mac软件等各类学习资料及面试题&#xff0c;无论你刚入行的程序员&#xff0c;还…

安全运维--Linux常用命令

运维工程师之Linux常用命令 Linux是一个强大的操作系统&#xff0c;它提供了许多常用的命令行工具&#xff0c;可以帮助我们用于管理文件、目录、进程、网络和系统配置等。以下是一些常用的Linux命令&#xff1a; 一、获得命令帮助&#xff1a; 1、查看Shell内部命令pwd的帮…

C++_CH17_枚举

C_CH17_枚举 1.1 定义 枚举(ENUM),是enumeration的缩写。是为了让一组数值集合成为一种类型。 1.2一个例子 #include <iostream>enum Example {A,B,C;//说明你想让哪些数成为组合&#xff0c;默认第一个为0&#xff0c;之后每一个加1 };int a 0; int b 1; int c 2…