大佬教程收集整理的这篇文章主要介绍了如何在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,请注明来意。