程序问答   发布时间:2022-06-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了如何在React Router 4中实现经过身份验证的路由?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决如何在React Router 4中实现经过身份验证的路由??

开发过程中遇到如何在React Router 4中实现经过身份验证的路由?的问题如何解决?下面主要结合日常开发的经验,给出你关于如何在React Router 4中实现经过身份验证的路由?的解决方法建议,希望对你解决如何在React Router 4中实现经过身份验证的路由?有所启发或帮助;

您将要使用该Redirect组件。有几种不同的方法可以解决此问题。我喜欢的一个是,有一个PrivateRoute组件,该组件接受一个authed道具,然后根据该道具进行渲染。

function PrivateRoute ({Component: Component, authed, ...rest}) {
  return (
    <Route
      {...rest}
      render={(props) => authed === true
        ? <Component {...props} />
        : <Redirect to={{pathname: '/login', state: {from: props.LOCATIOn}}} />}
    />
  )
}

现在你Route的可以看起来像这样

<Route path='/' exact component={HomE} />
<Route path='/login' component={Login} />
<Route path='/register' component={Register} />
<PrivateRoute authed={this.state.autheD} path='/dashboard' component={DashboarD} />

如果您仍然感到困惑,我写了这篇文章可能会有所帮助 -React Router v4的受保护路由和身份验证

解决方法

我试图实现经过身份验证的路由,但是发现React Router 4现在阻止了它的工作:

<Route exact path="/" component={Index} />
<Route path="/auth" component={UnauthenticatedWrapper}>
    <Route path="/auth/login" component={LoginBotBot} />
</Route>
<Route path="/domains" component={AuthenticatedWrapper}>
    <Route exact path="/domains" component={DomainsIndex} />
</Route>

错误是:

在这种情况下,实现此目标的正确方法是什么?

它出现在react-router(v4)文档中,提示类似

<Router>
    <div>
    <AuthButton/>
    <ul>
        <li><Link to="/public">Public Page</Link></li>
        <li><Link to="/protected">Protected Page</Link></li>
    </ul>
    <Route path="/public" component={Public}/>
    <Route path="/login" component={Login}/>
    <PrivateRoute path="/protected" component={ProtecteD}/>
    </div>
</Router>

但是在将一堆路线组合在一起时是否有可能实现这一目标?


更新

好吧,经过一番研究,我想到了这个:

import React,{PropTypes} from "react"
import {RoutE} from "react-router-dom"

export default class AuthenticatedRoute extends React.Component {
  render() {
    if (!this.props.isLoggedIn) {
      this.props.redirectToLogin()
      return null
    }
    return <Route {...this.props} />
  }
}

AuthenticatedRoute.propTypes = {
  isLoggedIn: PropTypes.bool.isrequired,component: PropTypes.element,redirectToLogin: PropTypes.func.isrequired
}

发出错误的动作是正确的render()感觉。似乎确实不正确,componentDidMount还是带有其他挂钩?

大佬总结

以上是大佬教程为你收集整理的如何在React Router 4中实现经过身份验证的路由?全部内容,希望文章能够帮你解决如何在React Router 4中实现经过身份验证的路由?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。