简体   繁体   English

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

[英]exporting/using express-session in another file

What's the best/common way to use an express-session in other files? 在其他文件中使用快速会话的最佳/常见方法是什么? I have trouble integrating the session into my code. 我无法将会话集成到我的代码中。 I was using auth tokens, but I would like to use sessions instead. 我正在使用身份验证令牌,但我想改用会话。 I defined session in my server.js : 我在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};

And it works fine! 而且效果很好! But When I try to use it in my userController.js : 但是当我尝试在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();
  });
}

then req.session is undefined . 然后req.sessionundefined I know what I'm doing isn't right, obviously, but what's the right way to do it? 很明显,我知道我在做什么,但是正确的方法是什么?

Thanks! 谢谢!

I think you don't have to export session at all, as you are telling your app to use it in server.js . 我认为您根本不需要导出session ,因为您告诉appserver.js使用它。

So the working fiddle should be looking like the following: 因此,正在工作的小提琴应如下所示:

 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; 

and your controller: 和您的控制器:

 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(); }); } 

I am considering that you are going to use this exported login function for a route, like 我正在考虑您要将此导出的登录功能用于一条路线,例如

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM