Tag: 会话

无法访问Express / NodeJS中的req.sessionvariables

我已经看到了这个问题的许多变化,但似乎没有解决我的问题。 我正在尝试使用Express来设置Node.js服务器。 这是我的服务器configuration: var express = require('express'), RedisStore = require('connect-redis')(express); var app = express(); app.use(express.urlencoded()); app.use(express.json()); app.use(express.cookieParser()); app.use(express.session({ store: new RedisStore(), secret: APP_SECRET })); // Initialize redis connection var client = redis.createClient(); client.on('connect', function() { console.log('Connected to Redis server') }) client.on('error', function (err) { console.log('Error ' + err); }); // Enable cross-origin resource sharing app.all('*', […]

节点快速连接 – 会话pipe理

我已经为ConnectJS的ArangoDB写了一个会话存储驱动程序。 这是工作,虽然仍然非常阿尔法,但我有几个问题。 具有“假”过期属性的第一次会话仅在用户代理期间保持不变。 我注意到,当浏览器窗口closures时,不会调用session.destroy()。 这导致在商店中留下“被遗弃”的会话。 我怎样才能有效地清除这些? 有没有办法按计划search和销毁废弃的会话? 其次,我已经实施了本会话商店的最低要求,如本页所述: http : //www.senchalabs.org/connect/session.html (接近底部) 那会得到,设置和摧毁。 另外两个build议的方法是长度和清晰。 这些方法究竟应该做什么? 我假设长度返回一个会话已经活跃的时间长度? “清除”与“销毁”有何不同? 谢谢!

NodeJS超级访问会话对象

我用supertesttesting我的Node.js应用程序。 在我的控制器中,我访问会话对象。 为了提出有效的请求,这个会话对象需要填充一些数据。 调节器 // determine whether it is user's own profile or not var ownProfile = userId == req.session.user._id ? true : false; testing it('profile', function (done) { testUserOne.save(function(error, user){ request .agent(server) .get('/profile?userId=' + user._id) .expect('Content-Type', /html/) .expect(200) .expect(/Profile/) .end(done); }) }); 题 我怎样才能嘲笑的REQ /会议对象?

node.js connect-auth应用程序? 例子(用户注册/用户/会话pipe理)

我试图得到node.js的挂起,我正在寻找一个authentication的例子。 希望使用连接authentication和使用哈希和盐的http摘要。 我看了这个,但看起来不太安全: http://nodetuts.com/tutorials/13-authentication-in-express-sessions-and-route-middleware.html#video 有没有人有更好的例子? Mongodb首选! 谢谢! 用户pipe理和身份validation是我正在寻找。

在Express中更改Cookie到期

因为在调用expressServer.use(express.session({params}))时我没有定义maxAge,所以cookie的到期时间被设置为“Session”。 我想在login时添加“记住我”function。如果select“记住我”,则过期将延长到一个月。 我怎么去做这个? 我试图简单地扩大maxAge,但似乎没有做任何事情… expressServer.get '/blah', (request, response) => request.session.cookie.maxAge = 2592000 response.end 'hello there' 谢谢您的帮助! ** 编辑 ** 我试图做一个简单的服务器来testing更新用户的cookie。 我正在使用Express 3.0.4 当我访问127.0.0.1:9000/blah时,浏览器cookie的“过期”字段仍然是“会话”… express = require 'express' expressServer = express() expressServer.use express.cookieParser() expressServer.use express.session secret: 'supersecret' cookie: path: '/' httpOnly: true expressServer.get '/', (request, response) => response.end 'hello' expressServer.get '/blah', (request, response) => request.session.cookie.maxAge = […]

Node / Express:使用会话存储状态时的并发问题

所以我search了一下,发现了几个类似的问题,但都没有真正解决这个问题,所以我觉得这个问题本身就是值得的。 我有一个修改会话保持状态的一堆路由的快速应用程序。 事情是,如果有多个并行请求,由于请求之间的竞争条件,会话会不时被覆盖。 所以通常 … app.use(express.static('/public')); app.use(session(…)); app.route('methodA').get(function(req, res, next) { doSomethingSlow().then(function() { req.session.a = 'foo'; res.send(…); } }); app.route('methodB').get(function(req, res, next) { doSomethingElseSlow().then(function() { req.session.b = 'bar'; res.send(…); } }); 基本上这个问题很简单,例如在这个答案中描述。 Express将会话存储在res.end()中,但在处理methodA请求时,methodB请求可能会在此期间修改会话,以便methodA存储会话时将覆盖methodB所做的任何更改。 因此,即使节点是单线程的,并且所有请求都由同一个线程提供服务,只要有任何方法正在执行某种asynchronous操作,我们就可以最终解决并发问题,从而让其他请求同时处理。 但是,我正在努力决定如何着手解决这个问题。 所有我find的答案只列出了最小化发生这种情况的可能性的方法,例如通过确保静态内容不通过在会话MW之前注册服务静态MW来存储会话。 但这只是在一定程度上有所帮助; 如果实际上API方法应该被并行调用,那么需要一些实际并发的会话更新方法(IMO,当涉及到并发问题时,每个“解决scheme”都力求最小化发生问题的可能性而不是寻址实际问题肯定会出错)。 基本上这些是我目前正在探索的select: 完全通过修改我的客户端来防止在同一个会话中的并行请求,以确保它连续调用所有的API方法。 这可能是可能的,但会对我的架构产生相当大的影响,并可能影响性能。 它也避免了这个问题,而不是解决这个问题,如果我的客户端出了问题,或者另一个客户端使用了API,我可能还会随机遇到这个问题,所以它不会很健壮。 确保每个会话写入之前都有一个会话重新加载,并使整个重新加载 – 修改 – 写入操作成为primefaces。 我不知道如何做到这一点。 即使在修改和存储会话之前修改res.end()来重新加载会话,因为读取和写入会话是asynchronousI / O,似乎可能会发生这种情况: 请求A重新加载会话 请求A修改session.A ='foo' 请求B重新加载会话(并不会看到session.A) […]

Internet Explorer中的快速会话

我像这样configuration快速会话插件: var express = require('express'), session = require('express-session'), uuid = require('node-uuid'); var expiration_day = new Date('9/15/2015'), today = new Date(), session_life = Math.abs(expiration_day.getTime() – today.getTime()); var config = { name: 'mycookie', // session ID cookie name key: 'mycookie', // session ID cookie name secret: '$FGDFH$W#WEgfgdf', hash: { salt: '9883hjHFIDSU&U#H' }, store: new MongoStore({mongooseConnection: db}), unset: […]

saveUninitialized和resave有什么区别?

Express会话中间件提供了几个可configuration的选项 。 resave :'强制会话保存回会话存储区,即使会话在请求期间从未被修改。 saveUninitialized :'强制将未初始化的会话保存到商店。 当一个会话是新的,但没有被修改时,会话是未初始化的。 看来,这两个选项都是为了保存未修改的会话。 有什么不同?

套接字IO只会话不会持久

我正在使用我正在构build的聊天应用程序中的Socket.io 。 我正在尝试设置会话,以便在会话之间持续login用户。 以下是相关的代码: index.js (服务器) var cookieParser = require('cookie-parser')(); var session = require('cookie-session')({ secret: 'secret' }); app.use(cookieParser); app.use(session); io.use(function(socket, next) { var req = socket.handshake; var res = {}; cookieParser(req, res, function(err) { if (err) return next(err); session(req, res, next); }); }); io.on('connection', function(socket){ socket.on('test 1', function(){ socket.handshake.test = 'banana'; }); socket.on('test 2', function(){ […]

用JavascriptparsingPHP会话

我最近进入使用node.js扩展我的网站,并已实现我需要一个会话处理程序为我的PHP会话。 现在,一切都变得很酷,而且很漂亮,node.js读取php会话,并且可以传播与php自己的会话。 我正在使用数据库会话,因此会话数据被保存到数据库中的一个字段。 但是我发现了一个小问题。 我试图将会话数据读入node.js,这真的是一个奇怪的string。 我已经能够得到每个会话variables的结构下降到: 'field_name'|'type':'length':'value'; 现在,在某些string中,值字段可能会丢失其他string的长度可能会丢失(当一个variables为空)。 types也可以比b,s,i多; 它也可以是N(NULL)。 我原本以为JS的一个巨大的翻译,但这似乎是一个非常错误的方式来做到这一点。 有没有人在这里试图提取在JS中的PHP会话variables,有没有什么样的脚本可以帮助? 也许有一个格式化的东西,我可以在PHP端使用,使我的生活在node.js更容易吗? 编辑:架构看起来像: { _id: { id: 'L:\u00c1\u009d\u008e\u00ad\u000e}<\u0002\u0000\u0000' } , session_id: 'a2clfnjhopv1srs5k5elgbfjv5' , user_id: 0 , session_data: 'logged|b:0;uid|i:0;server_key|N;AUTH_TIER2|b:0;email|s:0:"";cheese|s:6:"cheese";' , active: 1 , expires: 1278920567 } 这是用户会话的mongo dblogging。 需要翻译的字段是session_data。 有一种格式错误粘贴它时,因为stackoverflow不会格式化作为代码,当我尝试,使之出于某种原因。 我试图JSONfy领域之前,但它失去了它的types,并没有读空条目等,所以我就这样做了 谢谢,