react路由鉴权 / 路由守卫

Love The Way You Lie 2023-06-22 10:34 48阅读 0赞

react路由鉴权 / 路由守卫
首先路由鉴权就是在访问一个页面时判断是否需要权限,比如电商App结算账单的时候需要登录用户的账号
路由守卫就是在该页面需要登录用户的情况下去判断是否登录
总的来说就是 判断权限是鉴权 判断是否登录就是守卫 我那这个电商给大家举个例子 项目的不同,要求不同,到时候根据需求去完成就行

下面是代码

创建一个SafeRouter.js文件

  1. import React from 'react';
  2. import {Redirect,Route} from 'react-router-dom';
  3. const SafeRouter = ({ component: Component, ...rest }) => (
  4. <Route
  5. {...rest}
  6. render={props =>
  7. //判断是否登录 在登录页面登录成功的时候把用户名保存到本地
  8. Boolean(localStorage.getItem("isLogin")) ?
  9. (
  10. <Component {...props} />
  11. )
  12. : (
  13. <Redirect
  14. to={
  15. {
  16. pathname: "/logins",//重定向到的网页位置
  17. state: { from: props.location }
  18. }}
  19. />
  20. )
  21. }
  22. />
  23. );
  24. export default SafeRouter

在需要鉴权的页面上引入这个SafeRouter.js文件

在写路由点击的时候可以把需要鉴权的route 换成你引入的文件SafeRouter 去包裹
代码如下

  1. 不需要守卫的情况下 Route包裹
  2. <Route path="/detail" component={Detail}></Route>
  3. 不要守卫的情况下 Route包裹
  4. <SafeRouter path="/detail" component={Detail}></SafeRouter>

下面是我的一个组件中的路由判断 不用复制,读懂就行

  1. import React, { Component } from 'react'
  2. import { BrowserRouter as Router, Route,Redirect } from 'react-router-dom'
  3. import Index from "../pages/index/First"
  4. import Logins from "../pages/logins/Login"
  5. import Detail from "../pages/detail/Detail"
  6. import SafeRouter from "./SafeRouter"
  7. import Grade from "../pages/index/my/Grade"
  8. export default class index extends Component {
  9. render() {
  10. return (
  11. <div className="content_router">
  12. <Router>
  13. <SafeRouter path="/index/First" component={Index}></SafeRouter>
  14. <Route path="/logins" component={Logins}></Route>
  15. <SafeRouter path="/detail" component={Detail}></SafeRouter>
  16. <SafeRouter path="/Grade" component={Grade}></SafeRouter>
  17. //从定向到首页
  18. <Redirect to="/index/First"></Redirect>
  19. </Router>
  20. </div>
  21. )
  22. }
  23. }

发表评论

表情:
评论列表 (有 0 条评论,48人围观)

还没有评论,来说两句吧...

相关阅读

    相关 react前置守卫

    react中一切皆组件--2018.7.18 目标:自定义user界面的前置路由守卫,当用户点击要进入user组件时,路由守卫发起判断,如果条件满足则进入,否则跳转至l

    相关 react 守卫

    原理 `react路由守卫` 是通过 `高阶组件(HOC)` 实现的 因此针对不同的情况就要封装不同的 `HOC` 接下来展示一个有关登录权限的路由守卫例子 demo