Nuxt.js与护照失去req.user
我正在努力使用Nuxt.js和Passport.js Node.js应用程序。 我用vuexlogin并设置用户数据。
行动:
nuxtServerInit ({ commit }, { req }) { if (req.session && req.session.authUser) { commit('SET_USER', req.session.authUser) } }
突变:
SET_USER: function (state, user) { state.authUser = user }
它工作正常,但是当我试图访问页面,只能通过loged用户访问出现问题。
axios.get('http://localhost:3000/api/articles/add') router.get('/api/articles/add', ensureAuthenticated, (req, res) => { res.send({ title: 'Add Article' }) }) function ensureAuthenticated (req, res, next) { if (req.isAuthenticated()) { return next() } else { res.redirect('/users/login') } }
我login并进入http:// localhost:3000 / articles / add ,为此用户请求数据限制(GET http:// localhost:3000 / api / articles / add )。 通过ensureAuthenticated
检查,如果用户被locking, isAuthenticated()
将始终返回false
,当我想发送用户数据,而不ensureAuthenticated
则返回undefined
app.get('/api/articles/add', (req, res) => { res.send(req.user) // undefined })
但如果我将这个数据发送到页面,我想要访问相同的API路线,我得到正确的数据在屏幕上。
app.get('/articles/add', function(req, res) { res.send(req.user) // {...} })
有人能解释我吗? 而在某些情况下,我无法从node.js端进行redirect。 就像在这个例子中
function ensureAuthenticated (req, res, next) { if (req.isAuthenticated()) { return next() } else { res.redirect('/users/login') // ignored } }