当前位置:首页 > React

在react如何加token

2026-01-24 09:58:12React

在 React 中添加 Token 的方法

使用 localStorage 或 sessionStorage 存储 Token

Token 可以存储在浏览器的 localStoragesessionStorage 中,方便在页面刷新后仍然保持登录状态。以下是示例代码:

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

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

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

在请求头中添加 Token

在发送 HTTP 请求时,通常需要在请求头中添加 Token。可以使用 axiosfetch 实现:

import axios from 'axios';

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

// 发送请求
axios.get('/api/data').then(response => {
  console.log(response.data);
});

使用 Context API 或 Redux 全局管理 Token

通过 React 的 Context API 或 Redux 全局管理 Token,方便在组件间共享状态:

// 使用 Context API
import React, { createContext, useContext, useState } 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

使用 react-router-dom 进行路由保护,确保只有携带有效 Token 的用户才能访问特定页面:

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

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

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

在登录时获取并存储 Token

在登录表单提交后,获取 Token 并存储:

const handleLogin = async (credentials) => {
  try {
    const response = await axios.post('/api/login', credentials);
    const { token } = response.data;
    localStorage.setItem('token', token);
    // 更新全局状态或重定向
  } catch (error) {
    console.error('Login failed:', error);
  }
};

处理 Token 过期或失效

Token 可能过期或失效,需要在前端处理这种情况:

在react如何加token

axios.interceptors.response.use(
  (response) => response,
  (error) => {
    if (error.response.status === 401) {
      localStorage.removeItem('token');
      // 跳转到登录页或显示提示
    }
    return Promise.reject(error);
  }
);

标签: reacttoken
分享给朋友:

相关文章

如何记忆react

如何记忆react

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

react如何浮动

react如何浮动

使用 CSS 实现浮动 在 React 中实现浮动效果可以通过 CSS 的 float 属性完成。在组件的样式文件或内联样式中直接设置 float: left 或 float: right。…

react 如何调试

react 如何调试

调试 React 应用的方法 使用 React Developer Tools 安装 Chrome 或 Firefox 的 React Developer Tools 扩展,可以检查组件树、状态和 p…

react如何滚动scroll

react如何滚动scroll

React 实现滚动的方法 使用 useRef 和 scrollTo 方法 通过 useRef 获取 DOM 元素的引用,调用 scrollTo 方法实现滚动。 import React, { us…

如何搭建react项目

如何搭建react项目

使用 Create React App 搭建项目 Create React App (CRA) 是官方推荐的快速搭建 React 项目的工具,无需配置构建工具(如 Webpack 或 Babel)。…

react如何检测窗口

react如何检测窗口

监听窗口大小变化 使用useEffect钩子和resize事件监听窗口尺寸变化。在组件挂载时添加事件监听器,卸载时移除监听器以避免内存泄漏。 import { useState, useEffect…