节点JS会话注销问题

发布于 2025-01-28 19:43:53 字数 1793 浏览 2 评论 0原文

我创建了一个节点JS应用, 我正在使用使用会话

app.use(session({
  resave: true , 
  rolling: true,
  secret: '2853554111' , 
  genid: function(req) { return uuid(); },
  saveUninitialized: true
 }));

,这就是我将数据保存在会话中的方式。

req.session.user=req.body.username;

但是一段时间后,我会在会话中获得不确定的用户价值,这很频繁, 不确定代码有什么问题。

这就是我的app.js的样子

var createError = require('http-errors');
var express = require('express');
var path = require('path');
var cookieParser = require('cookie-parser');
var logger = require('morgan');
var session = require('express-session');
var indexRouter = require('./routes/index');
var usersRouter = require('./routes/users');
var bodyParser = require('body-parser');
var uuid = require("uuidv4");
var app = express();
var login = require('./routes/login-admin');
var adminHome = require('./routes/adminHome');
var pmLogin = require('./routes/pmLogin');
var pmHome = require('./routes/pmHome');
var confirmEmail = require('./routes/confirmEmail');

app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'jade');
app.use(express.static('public'));
app.use(logger('dev'));
//app.use(express.json());
app.use(express.json({limit: '5120mb'}));
//app.use(bodyParser.json())
app.use(bodyParser.json({ limit: '5120mb' }))
app.use(express.urlencoded({limit: '5120mb', extended: false }));

// view engine setup
app.use(session({
  resave: true , 
  rolling: true,
  secret: '2853554111' , 
  genid: function(req) { return uuid(); },
  saveUninitialized: true
 }));

app.use('/', indexRouter);
//app.use('/', login);
app.use('/users', usersRouter);
app.use('/login-admin', login);
app.use('/adminHome', adminHome);
app.use('/login', Login);
app.use('/Home', Home);
app.use('/confirmEmail', confirmEmail);

I have created an Node js app,
I am creating session using

app.use(session({
  resave: true , 
  rolling: true,
  secret: '2853554111' , 
  genid: function(req) { return uuid(); },
  saveUninitialized: true
 }));

and this is how I am saving my data in session.

req.session.user=req.body.username;

but after sometime I am getting undefined value of user in session, and this is hapenning very frequently,
Not sure what is wrong with the code.

This is how my app.js looks like

var createError = require('http-errors');
var express = require('express');
var path = require('path');
var cookieParser = require('cookie-parser');
var logger = require('morgan');
var session = require('express-session');
var indexRouter = require('./routes/index');
var usersRouter = require('./routes/users');
var bodyParser = require('body-parser');
var uuid = require("uuidv4");
var app = express();
var login = require('./routes/login-admin');
var adminHome = require('./routes/adminHome');
var pmLogin = require('./routes/pmLogin');
var pmHome = require('./routes/pmHome');
var confirmEmail = require('./routes/confirmEmail');

app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'jade');
app.use(express.static('public'));
app.use(logger('dev'));
//app.use(express.json());
app.use(express.json({limit: '5120mb'}));
//app.use(bodyParser.json())
app.use(bodyParser.json({ limit: '5120mb' }))
app.use(express.urlencoded({limit: '5120mb', extended: false }));

// view engine setup
app.use(session({
  resave: true , 
  rolling: true,
  secret: '2853554111' , 
  genid: function(req) { return uuid(); },
  saveUninitialized: true
 }));

app.use('/', indexRouter);
//app.use('/', login);
app.use('/users', usersRouter);
app.use('/login-admin', login);
app.use('/adminHome', adminHome);
app.use('/login', Login);
app.use('/Home', Home);
app.use('/confirmEmail', confirmEmail);

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

—━☆沉默づ 2025-02-04 19:43:53

您可以使用store express-Session的属性将会话保存在数据库中。
在此

const MySQLStore = require('express-mysql-session')(session);

const options = {   
  host: "xx.xx.xx.xx",              // setting connection options
  user: 'node',
  password: "xxxxxxxx",
  database: 'xxxxx',
  socketPath: 'xxxxx' //required only if using GAE
};

const sessionStore = new MySQLStore(options);

app.use(session({
  resave: true , 
  rolling: true,
  secret: 'xxxxxx' , 
  saveUninitialized: true,
  cookie: { maxAge: 86400000  },
  store: sessionStore,
 }));

,您很高兴。

you can use store attribute of express-session to save your session in database.
multiple example is given in this link.
Below is the snippet of connecting node js to Mysql

const MySQLStore = require('express-mysql-session')(session);

const options = {   
  host: "xx.xx.xx.xx",              // setting connection options
  user: 'node',
  password: "xxxxxxxx",
  database: 'xxxxx',
  socketPath: 'xxxxx' //required only if using GAE
};

const sessionStore = new MySQLStore(options);

app.use(session({
  resave: true , 
  rolling: true,
  secret: 'xxxxxx' , 
  saveUninitialized: true,
  cookie: { maxAge: 86400000  },
  store: sessionStore,
 }));

and you are good to go.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文