如何从快递控制反应路由器

Posted

技术标签:

【中文标题】如何从快递控制反应路由器【英文标题】:How to control react-router from express 【发布时间】:2017-05-27 04:20:33 【问题描述】:

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

【问题讨论】:

React Router Authorization的可能重复 【参考方案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'))

【讨论】:

以上是关于如何从快递控制反应路由器的主要内容,如果未能解决你的问题,请参考以下文章

反应路由器和快递

如何从 URL 中隐藏反应路由器参数和查询字符串

智能快递柜智能寄存柜4G模块连接服务器

如何使用反应路由器获取以前的位置?

在 reactJS 中从反应路由器链接传递道具

如何从一个反应组件到主 app.js 将布尔值设置为 false