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

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数据。

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

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

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

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 从零到精通:用C++ STL string优化代码
  • Biome-BGC生态系统模型与Python融合技术实践应用
  • 记一次 OOM内存溢出案例
  • 设计模式-行为型模式-模板方法模式
  • 预训练语言模型的前世今生 - 从Word Embedding到BERT
  • 深入掌握Linux磁盘管理,从入门到精通的完整指南
  • 安装node版本管理工具(nvm)、利用nvm安装node
  • html+css+js网页设计 故宫7个页面 ui还原度100%
  • 解决App推广痛点:一键获取下载数据的秘诀
  • Vue(七) TodoList案例1.0
  • 新的Ubuntu服务器如何启用root账号和配置静态ip以及开启ssh服务
  • spark.sql
  • 数仓基础(九):各大公司实时数仓实践
  • Spring Security与Apache Shiro:Java安全框架的比较
  • 电信500M宽带+AX210无线网卡测速
  • [译]CSS 居中(Center)方法大合集
  • ES10 特性的完整指南
  • extjs4学习之配置
  • github指令
  • HashMap剖析之内部结构
  • Java多态
  • Java新版本的开发已正式进入轨道,版本号18.3
  • PHP 7 修改了什么呢 -- 2
  • PHP 程序员也能做的 Java 开发 30分钟使用 netty 轻松打造一个高性能 websocket 服务...
  • TypeScript迭代器
  • 大主子表关联的性能优化方法
  • 第13期 DApp 榜单 :来,吃我这波安利
  • 机器学习中为什么要做归一化normalization
  • 前端知识点整理(待续)
  • mysql 慢查询分析工具:pt-query-digest 在mac 上的安装使用 ...
  • Nginx惊现漏洞 百万网站面临“拖库”风险
  • 策略 : 一文教你成为人工智能(AI)领域专家
  • 没有任何编程基础可以直接学习python语言吗?学会后能够做什么? ...
  • ​​​​​​​开发面试“八股文”:助力还是阻力?
  • ​Linux Ubuntu环境下使用docker构建spark运行环境(超级详细)
  • #QT项目实战(天气预报)
  • (¥1011)-(一千零一拾一元整)输出
  • (4.10~4.16)
  • (Windows环境)FFMPEG编译,包含编译x264以及x265
  • (动手学习深度学习)第13章 计算机视觉---微调
  • (独孤九剑)--文件系统
  • (附源码)python旅游推荐系统 毕业设计 250623
  • (附源码)spring boot基于Java的电影院售票与管理系统毕业设计 011449
  • (附源码)spring boot网络空间安全实验教学示范中心网站 毕业设计 111454
  • (附源码)springboot青少年公共卫生教育平台 毕业设计 643214
  • (六)激光线扫描-三维重建
  • (转)Mysql的优化设置
  • .bat批处理(一):@echo off
  • .net 7和core版 SignalR
  • .NET Core IdentityServer4实战-开篇介绍与规划
  • .Net MVC + EF搭建学生管理系统
  • .NET4.0并行计算技术基础(1)
  • .net中调用windows performance记录性能信息
  • ?
  • @RequestMapping-占位符映射