如何从 express 重定向到 react-router?

Posted

技术标签:

【中文标题】如何从 express 重定向到 react-router?【英文标题】:How do I redirect into react-router from express? 【发布时间】:2016-11-01 12:10:18 【问题描述】:

我正在将身份验证添加到我的应用程序中,该应用程序使用 react-router。我在 react-router 中的 auth-flow 示例之后对客户端路由进行了模式化,但使用护照而不是示例使用的本地存储。这一切都很好。

下一步是保护我在server.js 中为 express 定义的路由。我可以将重定向发送到/#/login,但这感觉很脆弱。 在服务器端将 URL 派生到 react-router 提供的登录路由的最佳方法是什么?

这是我现在在 server.js 中的内容,它有效,但感觉很脆弱:

app.get('/protected',
    // redirecting to #/login seems bad: what if we change hashhistory, etc.
    passport.authenticate('local',  failureRedirect: '/#/login'),
    function(req, res) 
     res.render('whatever');
    );

【问题讨论】:

更多您尝试过的代码示例。 是时候提供反馈了吗? 【参考方案1】:

在 express 上配置路由以使用 react-router 获取所有路由和路由,这样,ejem。 (希望对你有帮助)

server.js

import express from 'express'
import path from 'path'

const app = express();

app.use(express.static(__dirname + '/public'));
app.get('*', (req,res) => res.sendFile(path.join(__dirname+'/public/index.html'))).listen(3000,() => console.log('Server on port 3000'))

routes.jsx

import React from 'react'
import ReactDOM from 'react-dom'
import  Router, Route, Link, browserHistory, IndexRedirect  from 'react-router'

import App from '../views/app.jsx'

const Routes = React.createClass(
    render()
        return(
            <Router history= browserHistory >
                <Route path="/" component=App>
                    <IndexRedirect to="/dashboard"/>
                    <Route path="dashboard" name="Dashboard" component=App />
                    <Route path="pages" name="Pages" component=Pages />
                    <Route path="/:Id" component=Page/>
                    <Route path="/:Id/inbox" name=':ids' component=Inbox/>
                </Route>
                <Route path="*" component=App>
                    <IndexRedirect to="/dashboard" />
                </Route>
            </Router>
        );
    
);
ReactDOM.render(<Routes />, document.getElementById('app'))

【讨论】:

app.get('*') 将为css和js等静态文件呈现html页面。如何解决这个问题?

以上是关于如何从 express 重定向到 react-router?的主要内容,如果未能解决你的问题,请参考以下文章

通过重定向将数据从 Express 发送到 React

如何在 nodejs express 重定向上启用 CORS?

如何使用 Express.js 将用户重定向到不同的网页? (是的,我尝试过使用`redirect`方法)[重复]

使用护照进行身份验证后,如何在 React FROM express 中重定向到用户仪表板

如果登录成功,如何将用户从登录页面重定向到另一个反应页面?

无法使用res.redirect()方法重定向express + NodeJS [重复]