Tag: 会话

是node.js Express.cookieSession足够安全地保存敏感数据?

我对会议有很好的基本了解。 有两个选项可以使用express和node.js进行会话。 express.session express.cookieSession 第一个我很熟悉,但是我有一些关于第二个方法的问题。 使用cookieSession将存储客户端cookie中的所有实际数据。 这意味着敏感数据将被保存在客户端。 这看起来非常糟糕。 这是否意味着某些恶意软件可能检索到这些数据? 还有一个问题: 我试图用express.cookieSessionreplace我的express.session ,一切正常,我可以看到客户端的数据,但似乎每次我删除cookie并重新进入服务器,我得到同样的会话令牌。 这怎么可能? 除了改变express.session之外,还有什么我应该做的,让我们说: app.use(express.cookieSession({ secret: 'keyboard cat' })); 每当客户获得新的会话时,为什么我会得到相同的标记?

MongoDB:错误设置集合TTL索引:会议 – 问题

我正在尝试运行“节点server.js”。 它连接到远程MongoDB,从mongolab.com的URL。 我收到一个错误 MongoDB:在集合:会话上设置TTL索引时出错 我在这里提到的解决scheme: MongoDB:在集合:会话上设置TTL索引时出错 解决的办法是 在connect-mongo.js中添加下面的代码 var sessionStore = new MongoStore({ mongoose_connection: mongoose.connection }), cookieParser = express.cookieParser('waytoblue'); app.use(cookieParser); app.use(express.session({ store: sessionStore })); app.listen(); }); 问题: 我不知道在哪里添加这段代码。 我的connect-mongo.js如下。 /** * Module dependencies */ var mongo = require('mongodb'); var url = require('url'); /** * Default options */ var defaultOptions = {host: '127.0.0.1', port: 27017, stringify: […]

不同的GET和POST cookie?

在node.js中,我创build了一个服务器并试图打印headers.cookie。 但有一点我注意到,当我执行GET方法时, request.header.cookie给出了我期望的结果,但是当我使用AJAX执行POST方法时, request.headers.cookie返回空。 使用GET创build的Cookie与使用POST创build的Cookie不同?

redis会议继续开始

由于这是我的第一个问题,所以我会尽量具体。 我使用express 4和connect-redis模块来存储我的会话。 出于某种原因,当我启动节点应用程序,我注意到redis上的2个会话。 这将继续,redis上的会话将继续存在。 这怎么可能? 我的意思是甚至不使用我的浏览器? 据我所知会话绑定到在浏览器上创build的cookie。 那么所有其他的redis会话是从哪里来的? 由于环境是本地的,redis上只应该有一个会话? 更新这是我的server.js代码: var http = require( 'http' ) , compress = require( 'compression' ) , methodOverride = require( 'method-override' ) , cookieParser = require( 'cookie-parser' ) , bodyParser = require( 'body-parser' ) , session = require( 'express-session' ) , express = require( 'express' ) , passport […]

使用Node.js,Passport进行服务器到服务器的身份validation

我有两个服务在不同的子域上运行:1)Node.js,Express,PassportJS,2)基于PHP。 这两个服务都暴露在同一个门户网站中,为了避免要求用户input凭证两次,我们从PHP服务器调用Node.jsloginAPI。 节点返回会话cookie( connect.sid ),我们转发这个客户端的域设置为<<rootdomain>>.com 。 现在,当客户端调用Node.js时,我们可以看到cookie被发送到Node,但仍然无法validation。 我已经validation了以下几点: 从PHP服务器到Node的loginAPI调用返回connect.sid cookie的成功,并将会话条目添加到Redis服务器(我们使用Redis来存储会话) Cookie在浏览器中正确设置 浏览器调用Node.js时connect.sid cookie发送到服务器 如果我们直接从客户端调用loginAPI,一切都按预期工作。 基本上独立的Node应用程序没有任何问题。 我很好奇节点是否使用用户代理,IP或什么来validationconnect.sid cookie? 或者它与Passport / Express会话参数值有关吗? 什么可能是错的? 仅供参考,目前网站没有在SSL上运行。 这是我的会议参数: store = new RedisStore({ port: 6379, host: 'localhost', client : redis }); var sess = { store: store, secret: 'some secret', rolling: true, cookie: { maxAge : 36000000, secure: false }, saveUninitialized: […]

通过多个页面保持socket.io中的variables

我对node.js和socket.io相当陌生,所以其中一些问题可能看起来很愚蠢。 据说,我一直在试图开发一个应用程序,可以在不同的页面之间存储用户名。 例如,我在一个页面上设置了我的用户名。 然后我redirect到另一个页面,但是我的用户名仍然是一个可以在套接字连接中访问的variables。 这是我的基本服务器设置: var app = require('express')(); var http = require('http').Server(app); var io = require('socket.io')(http); app.get('/set', function(req, res){ res.sendfile('set.html'); }); app.get('/get', function(req, res){ res.sendfile('get.html'); }); io.on('connection', function(socket){ }); http.listen(3000, function(){ console.log('listening on *:3000'); }); 我的问题是: 1.)有可能知道该sockets目前在哪个页面上? 如果是这样,怎么样? 2.)如何与io.on(…)中的信息交互? 我曾尝试使用会话中间件socket.io和expression,但我似乎无法得到任何工作。 我很确定使用会话是最好的方法,但我不知道如何实现它们。 任何有关设置可通过不同页面访问的会话的build议也会很好。 谢谢!

nodejs中的会话正在部分存储

我正在开发一个应用程序,在会话中存储一个cassie对象。 这里cassie对象被部分存储在会话中。 这里是截图, 设置名为cassie的会话 这里是截图获取会议命名为cassie 这里只有一致性和types的对象被取出,而不是其他的。 我究竟做错了什么? 以及在会话中如何存储cassie对象?

使用express 4和socket.io在node.js中进行会话

我想在会话中坚持一些数据。 我正在使用MongoDB作为会话存储。 我准备了简单的代码,来做到这一点。 但是,这是行不通的。 我得到这个错误: types错误:无法设置未定义的属性'myVariable' 这是我的代码: var express = require('express'); var app = require('express')(); var http = require('http') var server = require('http').Server(app); var io = require('socket.io')(server); var get_ip = require('ipware')().get_ip; var Sequelize = require('sequelize'); var url = require("url"); var crypto = require('crypto'); var cookieParser = require('cookie-parser'); var Session = require('express-session'); var MongoStore = require('connect-mongo')(Session); […]

Passport.js / Express.js在每个networking请求中创build新的会话

我有一个工作loginfunction,正确authentication和保存。 但是,快递永远不会记住旧的会话,它总是为每个networking请求创build一个新的会话。 显然,Passport对于表示中间件初始化的命令是非常敏感的。 (例如: https : //www.airpair.com/express/posts/expressjs-and-passportjs-sessions-deep-dive )。 我检查了我的configuration对一些例子,并重新安排它,如果它会帮助,但它并没有移动我的错误。 要么这不是问题,或者我还没有findconfiguration圣杯。 这是我目前的configuration: 快速configuration app.engine('html', require('ejs').renderFile); app.set('view engine', 'html'); app.use(express.static(path.join(config.root, '/views'))); app.set('views', config.root + '/views'); var sessionOpts = { saveUninitialized: true, resave: false, store: new RedisStore({ host: 'localhost', port: 6379 }), secret: 'keyboard', cookie: { httpOnly: true, maxAge: 1000 } } app.use(bodyParser.json()); app.use(bodyParser.urlencoded({ extended: false })); app.use(cookieParser('keyboard')); […]

使用socket.io和express-session时,会在每次页面加载时生成一个新的会话ID

我正在尝试在“在PHP应用程序上”的用户和在Node.js环境上运行的Socket.io服务器之间build立通信。 每当php页面被重新加载时, io cookie值就会得到一个新的sessionID值。 这样做的问题是,我在每个页面加载请求上丢失了用户的会话,这阻止了我保持数据会话数据的活跃。 我能做些什么来确保io cookie值每次重新加载页面都不会生成新的sessionID? 这是我的服务器实现 const env = require('./config'); const sess = require('./sessions'); const app = require('express')(); const https = require('https'); const fs = require('fs'); const session = require('express-session'); const RedisStore = require("connect-redis")(session); const cookie = require('cookie'); const server = https.createServer( { key: fs.readFileSync('certs/key.pem'), cert: fs.readFileSync('certs/cert.pem') }, function (req, res){ res.setHeader('Access-Control-Allow-Origin', '*'); […]