【问题标题】:How to control react-router from express如何从快递控制反应路由器
【发布时间】:2017-05-27 04:20:33
【问题描述】:
我正在使用 node 和 express 后端构建一个反应应用程序。我使用 JWT 和护照进行身份验证。因此,当我登录时,它会返回授权令牌。所以现在可以使用令牌访问后端端点。但是我不知道如何限制用户在用户移动到其他路由(反应路由)时没有登录系统。我已经使用邮递员测试了端点,使用 axios 访问端点。当前保存在浏览器本地存储中的令牌,如何将令牌与 axios REST 调用一起发送?
【问题讨论】:
标签:
express
react-router
jwt
axios
【解决方案1】:
找到了!我不必从后端进行控制,而是可以在 reeact 路由器中使用 onEnter 道具与中间件一起使用来检查某个身份验证。如果它返回 true,它将移动到您的路线,否则它将移动到您提到的默认路线。代码如下。
function requireAuth(nextState, replace) {
if (!auth.loggedIn()) {
replace({
pathname: '/login',
state: { nextPathname: nextState.location.pathname }
})
}
}
render((
<Router history={withExampleBasename(browserHistory, __dirname)}>
<Route path="login" component={Login} />
<Route path="dashboard" component={Dashboard} onEnter={requireAuth}/>
</Router>
), document.getElementById('example'))