当前位置:首页 > React

react实现登录失效

2026-01-26 20:52:50React

React 实现登录失效处理

在 React 应用中处理登录失效通常涉及以下几个关键步骤:

检查登录状态

通过检查本地存储的 token 或调用 API 验证当前登录状态是否有效。可以使用 localStoragesessionStorage 存储 token。

const checkAuth = () => {
  const token = localStorage.getItem('token');
  if (!token) {
    return false;
  }
  // 可选:调用 API 验证 token 有效性
  return true;
};

拦截请求处理失效

使用 Axios 拦截器在请求或响应时检查登录状态,如果 token 失效则跳转到登录页。

react实现登录失效

import axios from 'axios';

axios.interceptors.response.use(
  response => response,
  error => {
    if (error.response.status === 401) {
      localStorage.removeItem('token');
      window.location.href = '/login';
    }
    return Promise.reject(error);
  }
);

路由守卫保护页面

通过 React Router 的 ProtectedRoute 组件保护需要登录的页面,未登录时重定向到登录页。

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

const ProtectedRoute = ({ component: Component, ...rest }) => (
  <Route
    {...rest}
    render={props =>
      checkAuth() ? (
        <Component {...props} />
      ) : (
        <Redirect to={{ pathname: '/login', state: { from: props.location } }} />
      )
    }
  />
);

定时检查登录状态

使用 setInterval 定时检查 token 是否过期,提前通知用户或自动刷新 token。

react实现登录失效

useEffect(() => {
  const interval = setInterval(() => {
    if (!checkAuth()) {
      alert('登录已过期,请重新登录');
      window.location.href = '/login';
    }
  }, 300000); // 每 5 分钟检查一次
  return () => clearInterval(interval);
}, []);

自动刷新 token

在 token 即将过期时自动刷新,避免频繁重新登录。

const refreshToken = async () => {
  try {
    const response = await axios.post('/refresh-token', {
      refreshToken: localStorage.getItem('refreshToken'),
    });
    localStorage.setItem('token', response.data.token);
  } catch (error) {
    window.location.href = '/login';
  }
};

全局状态管理

使用 Context API 或 Redux 管理登录状态,确保所有组件能响应登录状态变化。

const AuthContext = createContext();

const AuthProvider = ({ children }) => {
  const [isAuthenticated, setIsAuthenticated] = useState(checkAuth());

  return (
    <AuthContext.Provider value={{ isAuthenticated, setIsAuthenticated }}>
      {children}
    </AuthContext.Provider>
  );
};

退出登录处理

提供明确的退出登录功能,清除所有相关数据。

const handleLogout = () => {
  localStorage.removeItem('token');
  localStorage.removeItem('refreshToken');
  window.location.href = '/login';
};

通过以上方法可以全面处理 React 应用中的登录失效问题,确保用户体验和系统安全性。

标签: react
分享给朋友:

相关文章

如何创建react

如何创建react

创建React项目的步骤 使用Create React App工具快速搭建React项目。确保已安装Node.js(版本需≥14.0.0)和npm(版本需≥5.6)。 打开终端或命令行工具,运行以下…

react如何动画

react如何动画

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

如何恢复react

如何恢复react

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

react 如何操作cookie

react 如何操作cookie

安装依赖 在React项目中操作cookie通常需要第三方库的支持,推荐使用js-cookie。通过npm或yarn安装: npm install js-cookie # 或 yarn add js…

如何升级react native

如何升级react native

升级 React Native 的步骤 检查当前版本 运行以下命令查看当前项目的 React Native 版本: react-native --version 更新 React Native CL…

react 如何算精通

react 如何算精通

精通 React 的标准 精通 React 不仅需要掌握基础语法和核心概念,还需具备解决复杂问题、优化性能和架构设计的能力。以下是衡量 React 精通程度的关键维度: 核心概念与机制 组件…