从express重定向到react-router

时间:2017-02-09 07:44:18

标签: node.js reactjs express react-router

我正在我的应用程序中添加身份验证,它使用react-router.And react路由器正在处理我的登录/注册页面。我也使用护照进行身份验证,并且护照身份验证工作正常。

但是当我的护照验证成功并且我正在重定向到我的仪表板页面时,我确实遇到了问题。

server.js: -

app.get('/auth/google/callback',
passport.authenticate('google', {
successRedirect: '/dashboard',
failureRedirect: '/',
 }));



 app.get('*',(req, res) => {
  if (process.env.NODE_ENV === 'development') {
    webpackIsomorphicTools.refresh();
  }
  const memoryHistory = createHistory(req.originalUrl);
  const store=configureStore(memoryHistory);
  const history = syncHistoryWithStore(memoryHistory, store);

  function hydrateOnClient() {
    res.send(`<!doctype html>${ReactDOM.renderToString(<Default assets={webpackIsomorphicTools.assets()} store={store} />)}`);
  }

  match({ history, routes: routes(store), location: req.originalUrl },
  (error, redirectLocation, renderProps) => {
    if (redirectLocation) {
      res.redirect(redirectLocation.pathname + redirectLocation.search);
    } else if (error) {
      console.error('ROUTER ERROR:', pretty.render(error));
      res.status(500);
      hydrateOnClient();
    } else if (renderProps) {
      const component = (
        <Provider store={store} key="provider">
          <RouterContext {...renderProps} />
        </Provider>
      );

      res.status(200);

      global.navigator = { userAgent: req.headers['user-agent'] };

      res.send(`<!doctype html>${ReactDOM.renderToStaticMarkup(<Default assets={webpackIsomorphicTools.assets()} component={component} store={store} />)}`);
    } else {
      res.status(404).send('Not found');
    }
  });
});

将服务器端的URL派生到react-router服务的仪表板路由的最佳方法是什么?

0 个答案:

没有答案