javascript - 设置为 req 并在另一条路由中访问

标签 javascript node.js express

我的用户必须登录才能访问任何路由,但为什么在第二个路由中 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/

相关文章:

javascript - Azure 应用服务 - Nodejs ES 模块错误

mysql - 使用nodejs将excel表上传到MySQL时如何忽略第一行?

node.js - 在服务器之间发送 cookie 与发送 header

node.js - Express:组合中间件

javascript - Azure Blob 存储请求的资源错误上不存在 Access-Control-Allow-Origin header

Javascript 在下拉选择中停止 TR 单击事件

javascript - React 似乎在浏览器中渲染之前转义了 HTML,导致它在页面中显示为代码

javascript - 关于 AngularJS 中的异步、 promise 和链接的问题

javascript - node.js 用目录写文件?

javascript - knockout 点击绑定(bind) : onClick vs. onClick()