B5net

人生是场无尽旅途,欢声笑语,踟蹰彷徨,走过的是岁月,路过的是迷茫。向前,是希望极光;回首,是悠长深巷。

React中react-router-dom V6实现简单的路由鉴权

Published on:2022-05-11

react-router-dom V6实现简单的路由鉴权


一、创建一个鉴权的组件,进行鉴权判断逻辑


下面是判断是否登录的简单实现

import React from 'react'
import { useSelector } from 'react-redux'
import { Navigate, useLocation } from 'react-router-dom'

const AuthRouter = ({ children }) => {
    const token = useSelector((state) => state.token)
    const location = useLocation()
    if (token) {
        return children
    } else {
        return <Navigate to='/login' replace state={{ from: location }}></Navigate>
    }
}
export default AuthRouter


二、在路由文件中将需要进行登录判断的路由进行组件包含


import { lazy } from 'react'
import { Navigate } from 'react-router-dom'
import AuthRouter from './AuthRouter'
const Index = lazy(() => import('../views/Index'))
const Login = lazy(() => import('../views/Login'))
const Error = lazy(() => import('../views/Error'))
const routes = [
    {
        path: '/',
        element: (
            <AuthRouter>
                <Index />
            </AuthRouter>
        )
    },
    {
        path: '/login',
        element: <Login />
    },
    {
        path: '/error',
        element: <Error />
    },
    {
        path: '*',
        element: <Navigate to='/error' replace />
    }
]
export default routes


三、App.js中进行路由的加载和组件的懒加载


import React, { Suspense } from 'react'
import { useRoutes } from 'react-router-dom'
import routes from './router'
import PageLoading from './components/PageLoading'
const App = () => {
    const routeList = useRoutes(routes)
    return (
        <>
            <Suspense fallback={<PageLoading />}>{routeList}</Suspense>
        </>
    )
}
export default App



如上当未登录时,访问/时,就会自动跳转到 /login

留言列表(0)

    留言

    B5net

    人生是场无尽旅途,欢声笑语,踟蹰彷徨,走过的是岁月,路过的是迷茫。向前,是希望极光;回首,是悠长深巷。

    开源项目
    最新评论
    wpstqe :作者大大有没有建一个QQ群的计划?
    流浪的PHPer :感谢开源项目,快速开发非常的好用!
    小白 :大佬您好 请问一下 http://b5laravelcmf.b5net.com/admin这个演示网址的全部代码有吗,gitee上不全呢,还能提供一下吗,感激不尽阿
    tz :大佬 B5YiiCMF 还开放吗
    weifox on GoLang常用的三方库 :还有 https://github.com/golang-module/carbon
    php :关于导出功能:1、B5thinkCMF部署后 参数的导出功能点击后就白屏了,不知道是哪里有问题?2、人员部门的导出功能没看懂怎么配置的? 只是启用exportshow=true吗 方便的话请答复下,谢谢!
    初学者 :您好! 部署了您的B5ThinkCMF,请教下 使用新增功能如何实现二级联动呢 ?谢谢
    11 :22
    pcy :前排围观
    Louis :冰舞的博客使用yii框架做的吧,B5ThinkCMF在本地部署后,登录系统的响应时间要比B5YiiCMF的登录时间长,还有一些Bug待修复
    文章分类