React 守卫路由

1.在components文件夹下新建一个Auth.js的文件,里面写入判断token的逻辑:

// 导入重定向的路由模块
import { Navigate } from "react-router-dom"
// 获取本地token
let token = window.sessionStorage.getItem('token')
function Auth({children}){    
//如果token存在返回内容
if(token){       
 return <>{children}</>    
 }else{      
  return <Navigate to="/Login" replace></Navigate>  
  }
}
export {Auth}

2.在App.js里导入并使用:

// 导入路由鉴权组件
import {Auth} from './components/Auth'

3.需要鉴权的路由组件用Auth组件包裹,那么这个路由在没有token的情况下就会强制跳转到登录:

<Route path='/'element={ <Auth><Home/></Auth> }></Route)

React实现路由守卫可以使用React Router库来帮助管理路由和导航。React Router提供了一种简单的方式来实现路由守卫,可以通过定义适当的组件来控制页面访问权限。 以下是一个基本的示例,展示了如何使用React Router实现路由守卫: 1. 首先,安装React Router库: ``` npm install react-router-dom ``` 2. 在你的应用程序中导入所需的模块: ```jsx import { BrowserRouter as Router, Route, Switch, Redirect } from 'react-router-dom'; ``` 3. 定义一个私有路由组件,用于验证用户是否有权限访问特定页面。需要传入以下参数:`component`(要渲染的组件)、`isAuthenticated`(表示用户是否已经登录)、`...rest`(其他包含路由参数的属性)。 ```jsx const PrivateRoute = ({ component: Component, isAuthenticated, ...rest }) => ( <Route {...rest} render={(props) => isAuthenticated ? ( <Component {...props} /> ) : ( <Redirect to="/login" /> // 没有权限,重定向到登录页面 ) } /> ); ``` 4. 在应用程序的根组件中设置路由路由守卫。这将包裹整个应用程序,并根据需要定义私有和公共路由。 ```jsx const App = () => { const isAuthenticated = checkUserAuthentication(); // 检查用户是否已经登录 return ( <Router> <Switch> <Route exact path="/login" component={Login} /> // 公共路由,任何人都可以访问 <PrivateRoute path="/dashboard" component={Dashboard} isAuthenticated={isAuthenticated} // 私有路由,需要用户登录才能访问 /> </Switch> </Router> ); }; ``` 在上述代码中,`<PrivateRoute>` 组件用于保护需要用户登录才能访问的页面(例如仪表板)。如果用户未经身份验证,将重定向到登录页面。 请注意,上述示例中的 `checkUserAuthentication` 函数是一个示例,你需要根据实际需求自行实现。 这就是使用React Router实现基本的路由守卫的方法。你可以根据具体项目需求进行更复杂的路由守卫逻辑的实现
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

晴天飛 雪

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值