当前位置:首页 > 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 组件销毁的机制 在 React 中,组件的销毁通常由 React 的生命周期管理。当组件从 DOM 中移除时,React 会自动触发销毁相关的生命周期方法。以下是关键点: 组件的销毁通常…

如何选购react

如何选购react

选购 React 相关产品或服务的建议 React 是一个用于构建用户界面的 JavaScript 库,广泛应用于前端开发。以下是选购 React 相关产品(如课程、书籍、工具、组件库等)的参考方法:…

react 如何分页

react 如何分页

分页实现方法 在React中实现分页功能可以通过多种方式完成,具体取决于数据来源(如API或本地数据)和UI库的选择。以下是常见的实现方法: 使用本地数据分页 对于存储在组件状态或Context中…

react如何diff

react如何diff

React Diff 算法原理 React 的 Diff 算法是 Virtual DOM 的核心部分,用于高效更新真实 DOM。其核心思想是通过对比新旧 Virtual DOM 树的差异,最小化 DO…

react如何动画

react如何动画

React 动画实现方法 React 中实现动画可以通过多种方式,包括原生 CSS、第三方库或 React 内置的动画解决方案。以下是几种常见方法: 使用 CSS 动画和过渡 通过 CSS 的 tr…

react如何同步

react如何同步

React 同步状态管理方法 在 React 中实现同步状态管理,可以通过以下多种方式实现: 使用 useState 和 useEffect 钩子 通过 useState 定义状态,使用 useEf…