gpt4 book ai didi

node.js - 在另一个文件中导出/使用快速 session

转载 作者:太空宇宙 更新时间:2023-11-04 01:38:23 25 4
gpt4 key购买 nike

在其他文件中使用快速 session 的最佳/常见方法是什么?我无法将 session 集成到我的代码中。我正在使用身份验证 token ,但我想使用 session 。我在 server.js 中定义了 session :

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未定义。显然,我知道我所做的事情是不对的,但是正确的方法是什么?

谢谢!

最佳答案

我认为您根本不必导出session,因为您告诉您的应用server.js中使用它。

所以工作 fiddle 应该如下所示:

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;

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

我正在考虑您将使用这个导出的登录函数作为路由,例如

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

关于node.js - 在另一个文件中导出/使用快速 session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53799359/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com