什么是路由守卫?
路由跳转前做一些验证,比如登录验证,是网站中的普遍需求
导航守卫(navigation-guards)这个名字,听起来怪怪的,但既然官方文档是这样翻译的,就姑且这么叫吧
privateRoute.tsx
我们在src/util
下面增加了一个路由守卫的工具,只需要把他引入到您的router
文件中,替换之前的route
组件即可
具体实现
import { Route, Redirect, RouteProps } from 'react-router-dom';
import * as React from "react";
export interface PrivateRouteProps extends RouteProps {
component: React.ComponentType<any>
isSignIn: boolean
isIndex?: boolean
}
export const PrivateRoute = (props: PrivateRouteProps) => {
let { component: Component, isSignIn, ...rest } = props;
return (
<Route
{ ...rest }
render = { props => isSignIn === true ? <Component { ...props } /> : <Redirect to='/login' />}
/>)
}
主要是对Route
做了一次简单封装,可在App.tsx
验证用户是否拥有访问权限,若为false
则强制跳转/login