Node.js 从express重定向到react路由器

Node.js 从express重定向到react路由器,node.js,reactjs,express,react-router,Node.js,Reactjs,Express,React Router,我正在将身份验证添加到我的应用程序中,该应用程序使用react-router。react-router正在处理我的登录/注册页面。此外,我正在使用passport进行身份验证,passport身份验证工作正常 但是当我的passport成功进行身份验证并且我正在重定向到我的仪表板页面时,我确实遇到了一个问题 server.js:- app.get('/auth/google/callback', passport.authenticate('google', { successRedirect:

我正在将身份验证添加到我的应用程序中,该应用程序使用react-router。react-router正在处理我的登录/注册页面。此外,我正在使用passport进行身份验证,passport身份验证工作正常

但是当我的passport成功进行身份验证并且我正在重定向到我的仪表板页面时,我确实遇到了一个问题

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');
    }
  });
});
app.get('/auth/google/callback',
passport.authenticate('google'{
successRedirect:“/dashboard”,
failureRedirect:“/”,
}));
应用程序获取(“*”,(请求,请求)=>{
if(process.env.NODE_env===‘development’){
webpackIsomorphicTools.refresh();
}
const memoryHistory=createHistory(要求原始记录);
常量存储=配置存储(内存历史记录);
const history=syncHistoryWithStore(memoryHistory,store);
函数名为{
res.send(`ReactDOM.renderToString()}`);
}
匹配({history,routes:routes(store),location:req.originalUrl},
(错误、重定向位置、渲染器操作)=>{
如果(重定向位置){
res.redirect(redirectLocation.pathname+redirectLocation.search);
}else if(错误){
console.error('ROUTER error:',pretty.render(error));
物质状态(500);
客户机();
}else if(渲染器操作){
常数分量=(
);
物质状态(200);
global.navigator={userAgent:req.headers['user-agent']};
res.send(`ReactDOM.renderToStaticMarkup()}`);
}否则{
res.status(404).send('notfound');
}
});
});
在服务器端将URL导出到react路由器提供的仪表板路由的最佳方法是什么