代码之家  ›  专栏  ›  技术社区  ›  kattapillar

在另一个文件中导出/使用express会话

  •  1
  • kattapillar  · 技术社区  · 7 年前

    在其他文件中使用快速会话的最佳/常见方法是什么?我无法将会话集成到代码中。我使用的是auth令牌,但我想改用会话。 我定义了我的 server.js

    const express = require('express');
    var session = require('express-session');
    var cookieParser = require('cookie-parser');
    
    var app = express();
    app.use(cookieParser('secret'));
    app.use(session({
        key: 'user_sid',
        secret: 'secret',
        resave: false,
        saveUninitialized: false,
        cookie: {
            expires: 600000
        }
    }));
    
    // stuff
    
    module.exports = {app, session};
    

    userController.js :

    var express = require('express');
    var {session} = require('./../server');
    
    module.exports.login = (req, res) => {
      var body = _.pick(req.body, ['email', 'password']);
      User.findByEmailAndPassword(body.email, body.password).then((user) => {
        // console.log(req.session); // is undefined
        res.render('dashboard.hbs');
      }).catch((e) => {
        res.status(400).send();
      });
    }
    

    req.session undefined

    谢谢!

    1 回复  |  直到 7 年前
        1
  •  0
  •   Levon Grigoryan    7 年前

    我想你不必出口 session app 把它用在 server.js .

    因此,工作小提琴应如下所示:

    const express = require('express');
    var session = require('express-session');
    var cookieParser = require('cookie-parser');
    
    var app = express();
    app.use(cookieParser('secret'));
    app.use(session({
      key: 'user_sid',
      secret: 'secret',
      resave: false,
      saveUninitialized: false,
      cookie: {
        expires: 600000
      }
    }));
    
    // stuff
    
    module.exports = app;

    以及您的控制器:

    module.exports.login = (req, res) => {
      var body = _.pick(req.body, ['email', 'password']);
      User.findByEmailAndPassword(body.email, body.password).then((user) => {
        // console.log(req.session); // is undefined
        res.render('dashboard.hbs');
      }).catch((e) => {
        res.status(400).send();
      });
    }

    app.use('/login', require('yourCtrl.js').login);

    推荐文章