当前位置:首页 > React

react如何获取token

2026-02-12 08:38:39React

获取 Token 的方法

在 React 中获取 Token 通常涉及与后端 API 的交互(如登录验证)或从本地存储(如 localStorage、sessionStorage)中读取。以下是几种常见场景的实现方式:

从 API 获取 Token

通过发送 HTTP 请求(如登录接口)获取 Token,并将 Token 存储到本地:

import React, { useState } from 'react';
import axios from 'axios';

const LoginForm = () => {
  const [email, setEmail] = useState('');
  const [password, setPassword] = useState('');

  const handleSubmit = async (e) => {
    e.preventDefault();
    try {
      const response = await axios.post('https://api.example.com/login', {
        email,
        password,
      });
      const { token } = response.data;
      localStorage.setItem('authToken', token); // 存储到 localStorage
      console.log('Token:', token);
    } catch (error) {
      console.error('Login failed:', error);
    }
  };

  return (
    <form onSubmit={handleSubmit}>
      <input type="email" value={email} onChange={(e) => setEmail(e.target.value)} />
      <input type="password" value={password} onChange={(e) => setPassword(e.target.value)} />
      <button type="submit">Login</button>
    </form>
  );
};

从本地存储读取 Token

localStoragesessionStorage 中读取已保存的 Token:

import React, { useEffect } from 'react';

const Dashboard = () => {
  useEffect(() => {
    const token = localStorage.getItem('authToken');
    if (!token) {
      // 跳转到登录页
      window.location.href = '/login';
    } else {
      console.log('Stored Token:', token);
    }
  }, []);

  return <div>Protected Content</div>;
};

使用 Context 全局管理 Token

通过 React Context 在组件间共享 Token 状态:

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

const AuthContext = createContext();

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

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

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

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

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

在组件中使用:

const Profile = () => {
  const { token, logout } = useAuth();

  return (
    <div>
      <button onClick={logout}>Logout</button>
      {token && <p>Token: {token}</p>}
    </div>
  );
};

从 URL 参数获取 Token

适用于 OAuth 回调等场景,从 URL 中解析 Token:

import React, { useEffect } from 'react';
import { useLocation } from 'react-router-dom';

const OAuthCallback = () => {
  const location = useLocation();

  useEffect(() => {
    const params = new URLSearchParams(location.search);
    const token = params.get('token');
    if (token) {
      localStorage.setItem('authToken', token);
    }
  }, [location]);

  return <div>Processing OAuth...</div>;
};

注意事项

  1. 安全性:避免将敏感 Token 暴露在客户端代码或全局状态中。
  2. 存储方式:根据需求选择 localStorage(持久化)或 sessionStorage(会话级)。
  3. HTTP 请求:在请求头中携带 Token 时,通常格式为 Authorization: Bearer <token>

根据具体场景选择合适的方法即可。

react如何获取token

标签: reacttoken
分享给朋友:

相关文章

vue实现token

vue实现token

Vue 中实现 Token 认证的方法 在 Vue 中实现 Token 认证通常涉及前端与后端的交互,包括 Token 的获取、存储、发送和刷新等操作。以下是具体实现步骤: 获取 Token 用户登…

vue 实现token 登录

vue 实现token 登录

安装依赖 确保项目中已安装 axios 和 vue-router。若未安装,可通过以下命令安装: npm install axios vue-router 配置axios拦截器 在 src 目录下创…

react中monent如何获取日期

react中monent如何获取日期

使用 Moment.js 获取当前日期 在 React 中通过 Moment.js 获取当前日期,可以直接调用 moment() 函数。它会返回包含当前日期和时间的 Moment 对象。 impo…

react如何取消渲染

react如何取消渲染

取消渲染的方法 在React中,取消渲染通常指的是在某些条件下阻止组件渲染或中断正在进行的渲染过程。以下是几种常见的方法: 条件渲染 通过条件判断决定是否渲染组件或部分内容。可以使用if语句或三元运…

如何手写一个react

如何手写一个react

手写一个简单的 React 创建一个基础的 React 实现需要理解其核心概念:虚拟 DOM、组件、状态管理和渲染。以下是一个简化版的 React 实现。 创建虚拟 DOM 虚拟 DOM 是真实…

如何react页面

如何react页面

创建 React 页面 使用 create-react-app 快速初始化项目: npx create-react-app my-app cd my-app npm start 基础页面结构 在 s…