Tag: 会话

在SessionStore中设置Node.js Express会话过期时间而不是cookie

Express 会话过期时所能find的一切就是设置cookie。 session.cookie.expires = null; // Browser session cookie session.cookie.expires = 7 * 24 * 3600 * 1000; // Week long cookie 但是cookies的过期date并不是用你的secret “保护”的,因为这些只是你的浏览器pipe理的cookie设置。 如何在会话存储中设置会话的过期date? 因为从理论上讲,当有人使用你的计算机时,如果服务器端会话也不是与cookie同时过期,他们可以“修复”过期的cookie的到期时间并继续会话。 我无法find任何有关如何工作,或如何设置/改变这一点。

如果没有req.session.save(),会话将不会保存在Node.js中

我正在使用Node.js,Express和Redis构build一个网站进行会话pipe理。 无论什么原因,如果我有一个会话variables(在这个例子中是isLoggedIn ),并刷新页面,variables不会被保存,但是,如果我设置variables后调用req.session.save() ,它会得到保存到Redis(redis-cli监视器显示 – 不调用save()表明该variables不存在,而调用save()显示它)。 我正在使用它来设置和启动服务器: var express = require('express'); var path = require('path'); var favicon = require('serve-favicon'); var logger = require('morgan'); var cookieParser = require('cookie-parser'); var bodyParser = require('body-parser'); var swig = require('swig'); var session = require('express-session') var RedisStore = require('connect-redis')(session); var routes = require('./routes/index'); var users = require('./routes/users'); var app = express(); […]

我缺less关于快速会话和cookie的信息?

express和express-session和express-sql-session已经相当的了。 我已经得到它在用户login时在会话的数据库中创build一行。这是我如何设置它: //login route handler this.bcrypt.compare(password, row.hashed, function(err, passwordsMatch) { if (passwordsMatch === true) { console.log("user now logged in"); req.session.user = row; req.session.success = 'User successfully logged in'; res.send(row); res.end(); } }); Hunky dory! 我可以跳进我的会话表,并从数据库中获取行。 这里是: {"cookie":{"originalMaxAge":600000,"expires":"2015-08-24T23:16:20.079Z","httpOnly":false,"path":"/"}, "user":{"userID":24,"userName":"g","email":"g","joinDate":"2015-08-24T07:15:33.000Z"},"success":"User successfully logged in"} 请注意,您可以看到自定义使用对象已设置。 但是,在下一个获取某些数据的请求中,我检查会话上的user对象: // some other route called after login. if (!req.session.user) { console.log('user not […]

Nodejs + Passport.js + Redis:如何在Redis中存储会话

我读过这个主题Node.js + express.js + passport.js:保持身份validation之间的服务器重新启动 ,我需要完全相同的事情,但对于Redis。 我用这样的代码: var RedisStore = require('connect-redis')(express); app.use(express.session({ secret: "my secret", store: new RedisStore, cookie: { secure: true, maxAge:86400000 } })); 它不起作用。 要连接Redis,我使用connect-redis模块。 我做错了什么? 谢谢! UPD :我没有得到任何错误。 为了确保auth进程成功,我添加了日志行,并执行。 function(email, password, done) { // asynchronous verification, for effect… process.nextTick(function() { findByEmail(email, function(err, user) { if (!user) { return done(null, false, { message: […]

NodeJS与PHP应用程序和用户会话

我有一个PHP应用程序(Symfony2),我需要让我的用户实时(使用socket.IO)和其他用户交谈。 让我们把重点放在聊天机制上:一个login的用户可以和另一个login的用户交谈(用Symfony中的FOSUserBundlelogin)。 当用户发送消息时,必须将其保存在MySQL中并实时发送给其他用户。 所以这个消息被链接到我的MySQL数据库中的两个用户(一个发送者和一个接收者)。 所以我有两种可能性: 我使用PHP来存储消息: 我有一个事件点击“提交”,并与AJAX调用PHPurl 如果我的PHP返回“确定”(所以他正确地在数据库中添加消息),我发出一个Socket.IO事件 – >让教条与我的用户处理数据和symfony 在NodeJS方面,我有一个监听这个事件,我通过Socket.IO发送消息与其他事件 我只使用NodeJS: 我怎样才能在PHP和NodeJS方面login我的用户? 我需要实时使用不同的数据库数据库? 如何在NodeJS和PHP之间共享我的用户? 我不知道什么是最干净的解决scheme,如果有人能帮助我。 谢谢 !

req.session.passport为空,反序列化用户未调用 – ExpressJS,护照

我在使用Passport / ExpressJS中的会话时遇到问题。 当我loginreq.session ,我可以看到护照是{} : { cookie: { path: '/', _expires: Mon Sep 29 2014 19:37:16 GMT-0300 (BRT), originalMaxAge: 3594522, httpOnly: true, secure: true }, passport: {} } 另外,我正在使用Facebook进行身份validation,并且没有调用passport.deserializeUser 。 这是我的代码: passport.use(new FacebookStrategy({ // pull in our app id and secret from our auth.js file clientID : configAuth.facebookAuth.clientID, clientSecret : configAuth.facebookAuth.clientSecret, callbackURL : configAuth.facebookAuth.callbackURL […]

什么是“闪存数据”?

我一直在做一些关于nodejs的教程。 一个教程提到了一个名为“连接闪光”的库,可以让你设置“闪光数据”。 我从来没有听说过这个词之前有人可以定义这个? (我发现自述非常无益) 谢谢

Express 4会话在重新启动服务器时不会持久

我有一个Express 4应用程序安装程序来进行会话。 // Sessions app.use(cookieParser()); app.use(session({ secret: "some-secret" })); // Signup app.post("/signup", function (req, res) { create_user(req.body.user, function (err, user_id) { req.session.user_id = user_id; res.redirect("/admin"); }); }); 当我提交表单时,它将user_id保存到req.session中。 但是,当我重新启动服务器时,会话不见了。 为什么不坚持? 我是否缺less一些configuration?

我可以使用html5本地存储来存储用户authentication会话信息

快速背景: 我正在写Mongo / Express / Angular / Node SPA并使用护照我已经设置了OAuthlogin选项来处理用户authentication/授权。 随着护照,我成功地维护服务器上的会话,所以我所有的XHR请求(需要它)正在检查login的用户。 在login时,服务器将基本的用户会话信息放入一个cookie中,以便客户端在授权callback中find,然后我使用angular-cookies的$ CookieStore访问客户端上的cookie,将其保存到rootcope并清除cookie 。 问题: 除了用户刷新浏览器的任何事件之外,这一切都是完美的,这会导致我的rootcope会话显然被清除。 所以我正在考虑在浏览器本地存储(使用store.js)中存储会话信息,然后即使在初始加载时,我也可以检查浏览器本地存储中存在的会话,并在已经有会话的情况下绕过OAuthlogin。 在用户会话信息存储在浏览器本地存储中是不是很糟糕的做法,或者是否存在一些后勤/安全问题? 这个应用程序没有任何感性的数据,注册是免费的,login是真的只有在那里,所以我可以跟踪用户和存储在应用程序中为每个用户创build的数据。 而用户会话永远不会有密码(我只允许OAuthlogin没有本地选项)。

由于连接不再使用parseCookie方法,我们如何使用express来获取会话数据?

在node.js和express中,有很多例子展示了如何获取会话数据。 Node.js和Socket.io Express和Socket.io – 捆绑在一起 Socket.io和Session? 正如您在访问第三个链接时可以看到的那样,它是一个指向StackOverflow的链接。 有一个很好的答案,但正如在@UpTheCreek的评论中指出的,连接不再有parseCookie方法。 我也遇到了这个问题。 我find的所有教程都使用了connect的parseCookie方法,该方法现在不存在。 所以我问他怎么才能得到会话数据,他说他不知道最好的方法,所以我想我会在这里发布这个问题。 当使用express@3.0.0rc4 , socket.io和redis ,我们如何获取会话数据并使用它来授权用户? 我已经能够使用require('connect').utils.parseSignedCookie; ,但是当我这样做的时候,握手的时候总会得到一个警告/错误, warn – handshake error Error 从我读过的东西看来,这听起来不是一个永久的解决scheme。 UPDATE 好的我得到了session.socket.io在我的服务器上工作。 正如我怀疑的那样,我被困在授权的地步。 我想我可能会这样做是错误的,所以请随时纠正我。 在我的Redis数据库中,我将获得用户的信息。 他们第一次login时,我想更新他们的cookie,以便包含他们的用户信息。 然后下次他们回到网站,我想检查他们是否有一个cookie,如果用户信息在那里。 如果不在那里,我想把它们发送到login屏幕。 在login屏幕上,当用户提交信息时,会根据Redis数据库对该信息进行testing,如果匹配,则会使用用户信息更新cookie。 我的问题是这些: 1)如何通过RedisStore更新/更改cookie? 2)看起来会话数据只保存在cookie中。 如果有人closures了cookies,我怎样才能跟踪页面之间的用户信息? 这是我的适用代码: //…hiding unapplicable code… var redis = require('socket.io/node_modules/redis'); var client = redis.createClient(); var RedisStore = require('connect-redis')(express); var redis_store = […]