react之封装有无Token(路由权限控制)的高阶组件

@TOC

前景

  • 有些路由页面内的内容信息比较敏感,如果用户没有经过登录获取到有效Token,是没有权限跳转的,根据Token的有 无控制当前路由是否可以跳转就是路由的权限控制

技术方案

在这里插入图片描述

实现步骤

  • 1.在 components 目录中,创建 AuthRoute/index.jsx 文件
// 引入封装的获取token方法
import {
    getToken } from '@/utils'
//引入跳转
import {
    Navigate } from 'react-router-dom'
//children为组件
function AuthRouter({
     children }) {
   
  const token = getToken()
  if (token) {
   
  //有token 跳转到该组件
    return <>{
   children}</>
  } else {
   
  //无token 跳转到登录页面
    return <Navigate to={
   '/login'} replace></Navigate>
  }
}

export default AuthRouter

  • 2.router文件夹下index.js 将需要鉴权的页面路由配置,替换为 AuthRoute 组件渲染
// 路由配置
import Layout from '@/pages/Layout'
import Login from '@/pages/Login'

import {
    createBrowserRouter } from 'react-router-dom'
//引入鉴定token组件
import AuthRouter from '@/components/AuthRoute'
const router = createBrowserRouter([
  {
   
    path: '/',
    element: (
    //鉴定token高阶组件
      <AuthRouter>
        <Layout></Layout>
      </AuthRouter>
    ),
  },
  {
   
    path: '/login',
    element: <Login></Login>,
  },
])

export default router

相关推荐

  1. React 应用中,怎么封装一个权限

    2023-12-06 22:34:04       10 阅读
  2. reactwithRouter组件

    2023-12-06 22:34:04       34 阅读
  3. react组件怎么用?

    2023-12-06 22:34:04       19 阅读
  4. React组件

    2023-12-06 22:34:04       16 阅读
  5. React-

    2023-12-06 22:34:04       35 阅读
  6. React组件详解

    2023-12-06 22:34:04       23 阅读
  7. 使用React组件

    2023-12-06 22:34:04       11 阅读

最近更新

  1. openssl error:0A000126:SSL routines:ssl3_read_n:unexpected eof

    2023-12-06 22:34:04       0 阅读
  2. 各种软件启动方式

    2023-12-06 22:34:04       0 阅读
  3. 【创作纪念日】我的三周年创作纪念日

    2023-12-06 22:34:04       1 阅读
  4. Github 2024-07-07 开源项目日报 Top10

    2023-12-06 22:34:04       1 阅读
  5. 部署LVS-DR群集

    2023-12-06 22:34:04       1 阅读
  6. python的列表推导式

    2023-12-06 22:34:04       1 阅读

热门阅读

  1. 设计模式-模板方法模式

    2023-12-06 22:34:04       45 阅读
  2. 一些常见的爬虫库

    2023-12-06 22:34:04       29 阅读
  3. 【kafka实践】11|消费位移提交

    2023-12-06 22:34:04       45 阅读
  4. PHP字符串面试题

    2023-12-06 22:34:04       33 阅读
  5. BOOST_VMD_ASSERT_IS_NUMBER宏的测试程序

    2023-12-06 22:34:04       32 阅读