Passport.js – 将数据发回到react / redux应用程序,同时在login后redirect

我正在创build一个React / Redux应用程序,并且是使用Node / Express和Passport身份validation设置后端的新手。 我想要发生的是用户login,凭据被检查,如果用户从数据库中find,redirect用户到下一页,并返回用户的信息,所以我可以更新减速机。

我的端点login工作,因为我能够访问req.user对象,并获得成功身份validation后正确的用户信息。 我被卡住的地方是将用户redirect到另一个页面,同时也传递该用户的信息,所以我可能会更新REDX存储。

编辑:所以我通过发送authentication后的用户信息更新响应以及下一个redirect用户的路线。 由于我使用的是redux,我执行login操作,一旦得到响应,我redirect用户window.location。 这部分解决了我的问题,即使我login后redirect,我相信,更新window.location后,我的redux商店得到刷新,我失去了我抓住服务器端的任何信息。

app.post('/api/login', passport.authenticate('local-login', { failureRedirect: '/login'}), (req, res) => { res.json({ redirect: '/profile userInfo: req.user.dataValues}) }) }) export const login = (email, password) => { return(dispatch) => { axios .post('/api/login', { email: email, password: password }) .then(resp => { dispatch({ type: 'LOGIN_USER', data: resp.data }) window.location = resp.data.redirect }) .catch(errors => { console.log(erros) }) } } 

你正在失去你的状态,因为你正在用window.location = resp.data.redirect强制重新加载页面。 您应该使用路由器与您的应用程序进行URL更改(如react-router-dom )。 你可以通过使用pushState(或者可能是hashRouting?)以编程方式更改URL,而不是redirect你目前的方式。