是快递会议可以添加为中间件,所以我不必添加到每个页面

时间:2016-02-15 11:13:01

标签: node.js express cookies express-session

我想记录用户并存储会话,以便我可以识别它们。 然后在后端有一些代码从中获取数据并允许我将用户名传递给另一个db方法。

我有以下内容,但是想要使用会话而不必将其添加到我需要的每个页面,或者这是不可能的?

var express = require('express');
var app = express();

app.use(express.cookieParser());
app.use(express.session({secret: '1234567890QWERTY'}));

app.get('/awesome', function(req, res) {
  if(req.session.lastPage) {
    res.write('Last page was: ' + req.session.lastPage + '. ');
  }

  req.session.lastPage = '/awesome';
  res.send('Your Awesome.');
});

app.get('/radical', function(req, res) {
  if(req.session.lastPage) {
    res.write('Last page was: ' + req.session.lastPage + '. ');
  }

  req.session.lastPage = '/radical';
  res.send('What a radical visit!');
});

2 个答案:

答案 0 :(得分:0)

简短的回答是否定的。

会话将可用于所有页面,但除非您添加会话及其选项,否则您将无法在代码中访问它。

所以它已被放在你想要使用它的每个页面上。

答案 1 :(得分:0)

喜欢这个吗?

// my-middleware.js
module.exports = function(req, res, next) {
  if (req.session.lastPage) {
    res.write('Last page was: ' + req.session.lastPage + '. ');
  }
  req.session.lastPage = req.path;
  next();
};

// app.js
app.use(express.session({secret: '1234567890QWERTY'}));
app.use(require('./my-middleware'));

app.get('/awesome', function(req, res) {
  res.send('Your Awesome.');
});

app.get('/radical', function(req, res) {
  res.send('What a radical visit!');
});