reactjs - React Router Redirect 在专用路由中不起作用

标签 reactjs redirect react-router react-router-v4 react-router-dom

我有这个私有(private)路由组件,用于仅在用户登录时呈现组件,否则它应该重定向到登录页面。

const PrivateRoute = ({ component: Component, ...rest }) => (
    <Route {...rest} render={props => (
            authToken()
            ? <Component {...props} />
            : <Redirect to={{ pathname: '/login', state: { from: props.location } }} />
    )} />
)

export default withRouter(PrivateRoute);

这是我的主要应用:

            <BrowserRouter>
                <div className="wrapper">
                    <Switch>
                        <Route path="/login" component={LoginPage} />
                        <> 
                        <div className="dashboard">
                            <SideBar />
                            {permittedEvents &&
                                <div className="content-area">
                                    <PrivateRoute exact path="/" component={Dashboard} />
                                    <PrivateRoute exact path="/calendar" component={Calendar} />
                                </div>
                            }
                        </div>
                        </>
                    </Switch>
                </div>
            </BrowserRouter>

由于某种原因,重定向被完全忽略,当用户未登录时,将呈现边栏,但不会呈现内容或登录页面。

我试过只返回 te Private 路由中的重定向以强制 te 重定向并检查它是否与我的身份验证有关。但是重定向似乎无论在何处都不起作用。

最佳答案

你不需要路线

class PrivateRoute extends React.Component {
    constructor(props) {
        super(props);
    }

    render() {
        const { component: Component, ...rest } = this.props;

        const redirectPath = (<Redirect to={{
            pathname: "/login",
            state: {
                from: this.props.location.pathname
            }
        }}/>);

   if (!ok) {
                return redirectPath;
            }
        return <Component {...this.props} />;
    }
};

export default  withRouter(PrivateRoute);

关于reactjs - React Router Redirect 在专用路由中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58286901/

相关文章:

http - Tomcat http 没有重定向到 https

reactjs - 事件 NavLink 到父元素

javascript - react 选择标签不显示

javascript - 如何动态地将每个字段名及其各自的值添加到一个 json 对象中

ruby - 在 rails 3.1 中几秒钟后重定向

javascript - React-Router - 未捕获的类型错误 : Cannot read property 'route' of undefined

javascript - React Router如何处理url变化而不引起浏览器请求

node.js - webpack 警告 - DefinePlugin 中的警告 'process.env.NODE_ENV' 的冲突值

reactjs - 在 React App 中添加对 IconProps 的函数引用

Azure AD B2C 容易受到开放重定向的影响吗?