当前位置:首页 > React

react实现权限控制

2026-01-26 19:57:47React

路由级权限控制

使用 react-router-domRoutes 和自定义组件实现路由拦截。通过高阶组件或自定义 Route 组件包裹需鉴权的路由,检查用户权限后决定是否渲染目标组件或跳转登录页。

import { Navigate, Outlet } from 'react-router-dom';

const PrivateRoute = ({ allowedRoles }) => {
  const userRole = getUserRole(); // 获取用户角色
  return allowedRoles.includes(userRole) 
    ? <Outlet /> 
    : <Navigate to="/login" replace />;
};

// 使用示例
<Route element={<PrivateRoute allowedRoles={['admin']} />}>
  <Route path="/admin" element={<AdminPage />} />
</Route>

组件级权限控制

通过条件渲染或自定义封装组件控制UI元素的显隐。结合全局状态(如Redux或Context)存储用户权限信息,在组件内进行校验。

react实现权限控制

const AuthButton = ({ requiredPermission }) => {
  const { permissions } = useAuth(); // 从全局状态获取权限
  return permissions.includes(requiredPermission) 
    ? <button>敏感操作</button> 
    : null;
};

// 使用示例
<AuthButton requiredPermission="delete_user" />

API请求拦截

在axios拦截器中注入权限令牌(如JWT),并在请求前校验权限。若令牌失效或无权限,拦截请求并跳转错误页。

react实现权限控制

axios.interceptors.request.use(config => {
  const token = localStorage.getItem('token');
  if (!token || !validateToken(token)) {
    redirectToErrorPage();
    return Promise.reject('无权限');
  }
  config.headers.Authorization = `Bearer ${token}`;
  return config;
});

权限数据管理

采用树形结构或位运算存储权限码,提升校验效率。例如:

  • 角色-权限映射表:通过对象关联角色与可访问的功能列表。
  • 二进制权限码:每个权限对应一个二进制位,通过按位与运算快速校验。
const permissions = {
  admin: ['read', 'write', 'delete'],
  user: ['read']
};

// 二进制权限示例
const READ = 1 << 0; // 1
const WRITE = 1 << 1; // 2
const userPermissions = READ | WRITE; // 3
const canWrite = (userPermissions & WRITE) === WRITE; // true

动态菜单渲染

根据用户权限过滤导航菜单项,仅显示有权限访问的条目。结合后端返回的权限列表或本地配置生成动态菜单。

const menuItems = [
  { path: '/dashboard', permission: 'view_dashboard' },
  { path: '/settings', permission: 'edit_settings' }
];

const DynamicMenu = () => {
  const { permissions } = useAuth();
  return menuItems.filter(item => 
    permissions.includes(item.permission)
  ).map(item => <MenuItem path={item.path} />);
};

标签: 权限react
分享给朋友:

相关文章

react native如何启动

react native如何启动

React Native 启动步骤 确保已安装 Node.js(建议版本 14 或更高)和 npm/yarn。安装完成后,通过命令行工具执行以下操作。 初始化新项目 使用 React Native…

react 如何跳转

react 如何跳转

使用 React Router 进行页面跳转 React 应用中通常使用 react-router-dom 库实现页面跳转。以下是几种常见的跳转方式: 安装依赖 npm install react…

react就业如何

react就业如何

React 就业市场现状 React 作为当前主流前端框架之一,就业需求持续旺盛。国内外互联网企业、中大型公司以及初创团队普遍采用 React 技术栈,尤其在 Web 应用、移动端(React Nat…

react如何debugger

react如何debugger

调试 React 应用的方法 使用浏览器开发者工具进行调试 React 开发者工具(React DevTools)是调试 React 应用的必备工具。安装 Chrome 或 Firefox 扩展后,可…

react路由如何配置

react路由如何配置

React 路由配置方法 安装 React Router 使用 npm 或 yarn 安装 React Router 的 DOM 版本: npm install react-router-dom #…

如何搭建react项目

如何搭建react项目

使用 Create React App 搭建项目 Create React App (CRA) 是官方推荐的快速搭建 React 项目的工具,无需配置构建工具(如 Webpack 或 Babel)。…