【问题标题】:is express-session possible to add as middleware so i don't have to add to each page是否可以将 express-session 添加为中间件,因此我不必添加到每个页面
【发布时间】:2016-03-09 03:53:22
【问题描述】:

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

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

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

【问题讨论】:

  • 也许有人可以确认这是否是我应该使用 Express-session 的方式,以及当用户访问另一个网页时我需要做些什么来保持会话处于活动状态?

标签: node.js express cookies express-session


【解决方案1】:

简短的回答是否定的。

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

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

【讨论】:

    【解决方案2】:

    像这样?

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

    【讨论】:

    • 这都是一页的,我想要它作为中间件,所以我只需要编写一次代码,并且可以在其他js服务器端文件中访问
    猜你喜欢
    • 2018-06-02
    • 1970-01-01
    • 1970-01-01
    • 2019-05-13
    • 1970-01-01
    • 2013-08-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多