Node.js 从express重定向到react路由器
我正在将身份验证添加到我的应用程序中,该应用程序使用react-router。react-router正在处理我的登录/注册页面。此外,我正在使用passport进行身份验证,passport身份验证工作正常 但是当我的passport成功进行身份验证并且我正在重定向到我的仪表板页面时,我确实遇到了一个问题 server.js:-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:
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路由器提供的仪表板路由的最佳方法是什么