当前位置:首页 > React

react中token如何写

2026-01-25 06:38:43React

在React中处理Token的方法

使用localStorage或sessionStorage存储Token
将Token存储在浏览器的localStorage或sessionStorage中,便于跨页面使用。localStorage数据持久化,sessionStorage仅在当前会话有效。

// 存储Token
localStorage.setItem('token', 'your_token_here');

// 获取Token
const token = localStorage.getItem('token');

// 删除Token
localStorage.removeItem('token');

通过Context API全局管理Token
创建全局状态管理Context,方便组件树共享Token状态,避免逐层传递。

import React, { createContext, useState, useContext } from 'react';

const AuthContext = createContext();

export const AuthProvider = ({ children }) => {
  const [token, setToken] = useState(localStorage.getItem('token'));

  const login = (newToken) => {
    localStorage.setItem('token', newToken);
    setToken(newToken);
  };

  const logout = () => {
    localStorage.removeItem('token');
    setToken(null);
  };

  return (
    <AuthContext.Provider value={{ token, login, logout }}>
      {children}
    </AuthContext.Provider>
  );
};

export const useAuth = () => useContext(AuthContext);

在请求头中携带Token
通过axios拦截器或fetch配置,将Token自动附加到HTTP请求头中。

import axios from 'axios';

axios.interceptors.request.use((config) => {
  const token = localStorage.getItem('token');
  if (token) {
    config.headers.Authorization = `Bearer ${token}`;
  }
  return config;
});

路由守卫保护页面
结合React Router实现路由拦截,未登录时跳转到登录页。

import { Route, Navigate } from 'react-router-dom';

const PrivateRoute = ({ children }) => {
  const token = localStorage.getItem('token');
  return token ? children : <Navigate to="/login" />;
};

// 使用示例
<Route path="/dashboard" element={<PrivateRoute><Dashboard /></PrivateRoute>} />

Token刷新机制
通过拦截401响应,自动刷新Token并重试请求。

axios.interceptors.response.use(
  (response) => response,
  async (error) => {
    if (error.response.status === 401) {
      const newToken = await refreshToken(); // 实现刷新逻辑
      localStorage.setItem('token', newToken);
      return axios(error.config); // 重试原请求
    }
    return Promise.reject(error);
  }
);

安全注意事项
避免将敏感Token直接暴露在客户端代码中,确保使用HTTPS传输。对于高安全性场景,考虑HttpOnly Cookie存储。定期清理过期Token,并实现服务端校验机制。

react中token如何写

标签: 如何写react
分享给朋友:

相关文章

react如何测试

react如何测试

React 测试方法 React 应用的测试通常涉及组件测试、集成测试和端到端测试。以下是常用的测试工具和方法: Jest Jest 是 Facebook 开发的 JavaScript 测试框架,…

如何生成react代码

如何生成react代码

使用 Create React App 生成项目 安装 Node.js 后,通过命令行工具运行以下命令创建新项目: npx create-react-app my-app cd my-app np…

电脑如何安装react

电脑如何安装react

安装 Node.js 和 npm React 依赖于 Node.js 和 npm(Node Package Manager)。从 Node.js 官网下载并安装最新稳定版本,安装完成后会自动包含 np…

如何降低react版本

如何降低react版本

降低 React 项目版本的步骤 检查当前 React 版本 运行以下命令查看项目中安装的 React 当前版本: npm list react 或 yarn list react 修改…

java如何写一个接口

java如何写一个接口

在Java中定义接口 接口在Java中是一种抽象类型,用于定义一组方法规范,供类实现。接口通过interface关键字声明,可以包含抽象方法、默认方法、静态方法和常量。 public interfa…

如何记忆react

如何记忆react

理解核心概念 React的核心概念包括组件、状态(state)、属性(props)、生命周期方法(类组件)和钩子(函数组件)。掌握这些基础概念是记忆React的关键。组件是React应用的构建块,分为…