简体   繁体   English

设置为req并在另一条路线中访问

[英]set to req and access in another route

My user have to login before he can access any route, but why in the second route res.username is undefined? 我的用户必须先登录才能访问任何路由,但为什么在第二条路径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
})

I'm using express-session middleware with passport. 我正在使用带护照的快速中间件。

If you use express-session correctly, you should use req.session.username = req.user.name; 如果正确使用express-session ,则应使用req.session.username = req.user.name; .

Here is the link: https://github.com/expressjs/session 这是链接: https//github.com/expressjs/session

req.session req.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!')
  }
})

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM