如何从express控制react路由器

如何从express控制react路由器,express,react-router,jwt,axios,Express,React Router,Jwt,Axios,我正在使用node和express后端构建react应用程序。我使用JWT和passport进行身份验证。因此,当我登录时,它会返回授权令牌。因此,现在可以使用令牌访问后端端点。但我不知道如何在用户未登录系统时限制用户移动到其他路由(反应路由)。我使用postman测试了端点,使用axios访问im中的端点。中的令牌当前保存在浏览器的本地存储中,如何将令牌与axios rest调用一起发送?找到了它!。我不必从后端控制,相反,我可以使用reeact路由器中的OneNet道具与中间件一起使用,以检

我正在使用node和express后端构建react应用程序。我使用JWT和passport进行身份验证。因此,当我登录时,它会返回授权令牌。因此,现在可以使用令牌访问后端端点。但我不知道如何在用户未登录系统时限制用户移动到其他路由(反应路由)。我使用postman测试了端点,使用axios访问im中的端点。中的令牌当前保存在浏览器的本地存储中,如何将令牌与axios rest调用一起发送?

找到了它!。我不必从后端控制,相反,我可以使用reeact路由器中的OneNet道具与中间件一起使用,以检查特定的身份验证。如果返回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'))
功能要求授权(下一状态,替换){
如果(!auth.loggedIn()){
替换({
路径名:'/login',
状态:{nextPathname:nextState.location.pathname}
})
}
}
渲染((
),document.getElementById('example'))