当前位置:首页 > 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 实现:

在react如何加token

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 的用户才能访问特定页面:

在react如何加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 可能过期或失效,需要在前端处理这种情况:

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

标签: reacttoken
分享给朋友:

相关文章

react如何保养

react如何保养

保持组件简洁 将大型组件拆分为更小、更专注的组件,每个组件只负责单一功能。避免在单个组件中处理过多逻辑或状态,这有助于提高可维护性和可测试性。 合理使用状态管理 根据应用复杂度选择状态管理方案。简单…

react如何开发组件

react如何开发组件

React 组件开发基础 React 组件分为函数组件和类组件两种形式。函数组件是现代 React 开发的主流方式,结合 Hooks 可以实现完整功能。 函数组件示例: function Gree…

react架构如何

react架构如何

React 架构核心概念 React 的架构围绕组件化、虚拟 DOM 和单向数据流设计。组件是构建用户界面的独立模块,分为函数组件和类组件。虚拟 DOM 通过高效的 Diff 算法减少直接操作真实 D…

react如何encode

react如何encode

React 中编码的实现方式 在 React 中,编码通常涉及对 URL、HTML 实体或特殊字符的处理。以下是几种常见的编码方法: 使用 encodeURIComponent 进行 URL 编码…

react如何检测

react如何检测

检测 React 应用的方法 使用 PropTypes 进行类型检查 PropTypes 是 React 内置的类型检查工具,用于验证组件的 props 是否符合预期。在开发环境中,PropTypes…

如何关闭react

如何关闭react

关闭React应用的步骤 在开发或运行React应用时,可能需要关闭正在运行的开发服务器或停止应用。以下是几种常见情况的处理方法: 停止开发服务器 如果正在使用npm start或yarn star…