我的用户必须登录才能访问任何路由,但为什么在第二个路由中 res.username 未定义?
router.post('/login', passport.authenticate('local'), function(req, res) {
res.username = req.user.name;
res.json({result:1,username:req.user.name}); //work
});
router.post('/some_other_route', function(req, res, next) {
console.log(res.username) // undefined
})
我正在使用带有通行证的快速 session 中间件。
最佳答案
如果您正确使用express-session
,
您应该使用 req.session.username = req.user.name;
。
这是链接:https://github.com/expressjs/session
请求 session
To store or access session data, simply use the request property req.session, which is (generally) serialized as JSON by the store, so nested objects are typically fine. For example below is a user-specific view counter:
// Use the session middleware
app.use(session({ secret: 'keyboard cat', cookie: { maxAge: 60000 }}))
// Access the session as req.session
app.get('/', function(req, res, next) {
var sess = req.session
if (sess.views) {
sess.views++
res.setHeader('Content-Type', 'text/html')
res.write('<p>views: ' + sess.views + '</p>')
res.write('<p>expires in: ' + (sess.cookie.maxAge / 1000) + 's</p>')
res.end()
} else {
sess.views = 1
res.end('welcome to the session demo. refresh!')
}
})
关于javascript - 设置为 req 并在另一条路由中访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38841522/