相关疑难解决方法(0)

在Express.js中使用Session MemoryStore不会定义req.session

我已经使用Express.js设置了一个Node.js测试服务器,如下所示:

var express     = require('express');
var MemoryStore = express.session.MemoryStore;
var app         = express.createServer();

app.configure(function() {
    app.use(express.bodyParser());
    app.use(express.cookieParser());
    app.use(app.router);
    app.use(express.session({
        store: new MemoryStore(),
        secret: 'secret',
        key: 'bla'
    }));
});

app.get('/', function(req, res){
    console.log(req.session);
    res.end("html");
});

app.listen(3000);
Run Code Online (Sandbox Code Playgroud)

为什么console.log(req.session)打印出undefined?我没有正确使用它吗?为了将变量保存到用户的会话,我需要做什么?

客户端收到一个存储为其cookie的SID,但我无法分配任何属性req.session,因为它没有定义.感谢您提供解决此问题的任何提示!:-)

这是我正在使用的版本:

??? express@2.5.9
? ??? connect@1.8.7
? ? ??? formidable@1.0.9
? ??? mime@1.2.4
? ??? mkdirp@0.3.0
? ??? qs@0.4.2
Run Code Online (Sandbox Code Playgroud)

session node.js express

5
推荐指数
2
解决办法
9156
查看次数

Simple Node/Express应用程序无法识别会话存储

我有一个非常小的快递应用程序来说明我遇到的问题.

我在我的快递应用程序上使用connect-redis作为会话存储.我有一个问题,只是连接到它.只需打印出req.session.store结果undefined如下所示:

const session = require('express-session')
const app = require('express')()
const RedisStore = require('connect-redis')(session);

const isDev = process.env.NODE_ENV !== 'production'

app.use(session({
  store: new RedisStore({
    host: 'localhost',
    port: 6379
  }),
  secret: 'super-secret-key', // TBD: grab from env
  resave: false,
  saveUninitialized: false,
  cookie: {
    maxAge: 1000 * 60 * 60 * 24,
    secure: !isDev, // require HTTPS in production
  }
}))

app.get('/', (req, res) => {
  console.log('**testing**')
  console.log(req.session.store)
  res.send('rendering this text')
})

app.listen(3001, () => { …
Run Code Online (Sandbox Code Playgroud)

javascript session redis express express-session

4
推荐指数
1
解决办法
233
查看次数

使用NodeJS和Express 4.x的会话(req.session undefined)

首先抱歉我的英语不好.我正在学习,我正在做一个学术项目并遇到了一个问题.我记不起会话变量了.

的package.json

  "dependencies": {
    "body-parser": "^1.7.0",
    "ejs": "~1.0.0",
    "express": "^4.8.7",
    "express-session": "^1.11.3",
    "ini": "^1.3.4",
    "mysql": "^2.8.0",
    "winston": "^1.0.1"
}
Run Code Online (Sandbox Code Playgroud)

server.js

var express = require('express');
var session = require('express-session');
var app = express();
...
require('./router/main')(app, language, connection, logger);

app.set('views', __dirname + '/views');
app.set('view engine', 'ejs');
app.engine('html', require('ejs').renderFile);
app.use(express.static(__dirname + '/public'));
app.use(session({
    secret: 'pecuniamsekretsession',
    resave: false,
    saveUninitialized: true,
    cookie: { secure: true }
}));
Run Code Online (Sandbox Code Playgroud)

main.js

module.exports = function(app, languageItems, connection, logger) {
    app.post('/', require('../router/login.js')(languageItems, connection, logger)); 
    app.get('/', require('../router/login.js')(languageItems, connection, logger));
}
Run Code Online (Sandbox Code Playgroud)

login.js …

session login node.js express

2
推荐指数
1
解决办法
1957
查看次数

req.session是未定义的快递会话

我知道这个问题已被问过好几次了.但是,我读过的答案都没有解决我的问题.

其中许多已经过时用于快递v4,因为快递会议目前是一个单独的模块.那些问题/答案在这里:

其他问题已更新,但是给出的解决方案并不能解决我的问题.那些问题/答案在这里:

大多数解决方案是配置应用程序时的中间件序列.我尝试了不同的选项,但我找不到正确的方法.也许就是这样.

在其他解决方案中,有人说session中间件无法被调用,因为如果是,req.session则会被定义.我在之前使用过中间件app.use(session({...})),并检查两者是否被调用.

我也在这个问题中发现有人说他req.session在商店断开连接时未定义.到目前为止我正在使用默认商店.这可能是问题吗?

我收到这个错误:

TypeError:无法读取undefined的属性'destroy'

当我尝试使用req.session.destroy()login.js 注销会话时它会中断(请参阅下面的代码)


我的代码

server.js

const express = require('express');
const session = require('express-session');
const mongo = require('mongodb');
const passport = require('passport');
const path = require('path');
const routes = require('./app/routes');
const login = require('./app/routes/login.js');

const app = express();
app.use(session({
  secret: 'key',
  resave: false,
  saveUninitialized: true,
}));
app.use(passport.initialize());
app.use(passport.session());
app.use('/public', express.static(path.normalize('./public')));
app.use(routes);
app.use(login);
app.set('view engine', 'pug'); …
Run Code Online (Sandbox Code Playgroud)

session node.js express express-session

0
推荐指数
1
解决办法
2529
查看次数

标签 统计

express ×4

session ×4

node.js ×3

express-session ×2

javascript ×1

login ×1

redis ×1