express-session 是否可以作为中间件添加,所以我不必添加到每个页面

is express-session possible to add as middleware so i don't have to add to each page

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

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

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!');
});

简短的回答是否定的。

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

因此它已被放置在您要使用它的每个页面上。

像这样?

// 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!');
});