当前位置:首页 > React

react如何获取token

2026-03-31 12:09:04React

获取 Token 的方法

在 React 中获取 Token 通常涉及与后端 API 的交互,例如登录认证或第三方服务(如 OAuth)。以下是几种常见场景的实现方法:

通过登录表单提交获取 Token

在用户提交登录表单后,将用户名和密码发送到后端 API,接收返回的 Token 并存储。

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

const LoginForm = () => {
  const [username, setUsername] = useState('');
  const [password, setPassword] = useState('');

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

  return (
    <form onSubmit={handleSubmit}>
      <input
        type="text"
        value={username}
        onChange={(e) => setUsername(e.target.value)}
        placeholder="Username"
      />
      <input
        type="password"
        value={password}
        onChange={(e) => setPassword(e.target.value)}
        placeholder="Password"
      />
      <button type="submit">Login</button>
    </form>
  );
};

通过 OAuth 授权获取 Token

使用第三方 OAuth 服务(如 Google、GitHub)获取 Token,通常需要重定向到授权页面并回调处理 Token。

react如何获取token

import React from 'react';

const OAuthLogin = () => {
  const handleOAuthRedirect = () => {
    const clientId = 'YOUR_CLIENT_ID';
    const redirectUri = encodeURIComponent('http://localhost:3000/callback');
    const authUrl = `https://accounts.google.com/o/oauth2/auth?client_id=${clientId}&redirect_uri=${redirectUri}&response_type=token&scope=email`;
    window.location.href = authUrl;
  };

  return <button onClick={handleOAuthRedirect}>Login with Google</button>;
};

在回调页面中解析 URL 中的 Token:

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

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

  useEffect(() => {
    const hash = location.hash.substring(1);
    const params = new URLSearchParams(hash);
    const token = params.get('access_token');
    if (token) {
      localStorage.setItem('token', token);
      console.log('OAuth Token:', token);
    }
  }, [location]);

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

从本地存储读取 Token

如果 Token 已存储在 localStoragesessionStorage 中,可以直接读取:

react如何获取token

const token = localStorage.getItem('token');
if (token) {
  console.log('Stored Token:', token);
}

通过 HTTP 请求头传递 Token

在后续 API 请求中,将 Token 添加到请求头:

axios.get('https://api.example.com/protected', {
  headers: {
    Authorization: `Bearer ${localStorage.getItem('token')}`,
  },
});

使用 Context 或状态管理共享 Token

通过 React Context 或状态管理工具(如 Redux)全局共享 Token:

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);

在组件中使用:

const { token, login, logout } = useAuth();

注意事项

  • 安全性:避免将 Token 暴露在客户端代码中,确保使用 HTTPS。
  • 存储方式:根据需求选择 localStorage(持久化)或 sessionStorage(会话级)。
  • 过期处理:检查 Token 有效期并实现刷新逻辑。

标签: reacttoken
分享给朋友:

相关文章

react实现vue

react实现vue

React 实现 Vue 功能 React 和 Vue 是两种不同的前端框架,但可以通过一些方法在 React 中实现 Vue 的特性。以下是几种常见 Vue 功能在 React 中的实现方式: 双…

react如何部署

react如何部署

部署 React 应用的常见方法 使用静态服务器部署 React 应用在构建后会生成静态文件,可以直接通过静态服务器部署。常用的静态服务器包括 Nginx、Apache 等。 运行构建命令生成静态文…

如何构建react

如何构建react

构建 React 项目的步骤 安装 Node.js 和 npm 确保系统已安装 Node.js(包含 npm)。可通过命令行验证: node -v npm -v 使用 Create React Ap…

如何恢复react

如何恢复react

恢复 React 项目的方法 检查并修复依赖项 运行 npm install 或 yarn install 重新安装所有依赖项。如果依赖项损坏或缺失,这将恢复项目所需的库和工具。 恢复删除的文件 如…

react项目如何启动

react项目如何启动

启动React项目的步骤 确保已安装Node.js(建议版本12以上)和npm/yarn。可通过以下命令检查版本: node -v npm -v 全局安装create-react-app脚手架工具(…

vscode如何开发react

vscode如何开发react

使用 VSCode 开发 React 的配置指南 安装必要工具 确保 Node.js 和 npm/yarn 已安装,可以通过终端输入 node -v 和 npm -v 检查版本。若未安装,需从官网下载…