Tag: 会话

Cookie分析器与passport.js的使用仍然需要?

在node.js找不到关于一般passport.js安装和声明的任何信息(在passport.js站点上)。 在教程中,我总是看到express session中间件和cookie-parser按照passport要求进行陈述,但session文档( https://github.com/expressjs/session )指出: 自1.5.0版本以来,不再需要使用cookie分析器中间件来使这个模块正常工作。 这个模块现在直接在req / res上读取和写入cookie。 如果这个模块和cookieparsing器之间的秘密不一样,使用cookieparsing器可能会导致问题。 所以,我需要使用session和cookie-parser的passport出于某种原因,或者我只能使用session ,我需要调整一些东西呢?

当部署在多个node.js实例上时,passport.js是否需要会话亲缘关系?

当部署在多个Node.js实例上时,passport.js是否需要会话关联? 在使用会话关联时,身份validation可以在多个实例(在负载均衡器后)正常工作。 我正在使用redis作为会话存储。 但是,在不使用会话关联时,passport.js失败,出现以下错误。 通过一个实例,它总是有效的。 有什么办法让passport.js工作没有会话亲和力。 500 Failed to verify assertion (message: Invalid association handle) at Strategy.authenticate.identifier (node_modules/passport-google/node_modules/passport-openid/lib/passport-openid/strategy.js:184:36) at _verifyAssertionData (node_modules/passport-google/node_modules/passport-openid/node_modules/openid/openid.js:1053:12) at _verifyAssertionAgainstProvider (node_modules/passport-google/node_modules/passport-openid/node_modules/openid/openid.js:1178:14) at _checkSignatureUsingAssociation (node_modules/passport-google/node_modules/passport-openid/node_modules/openid/openid.js:1229:14) at Object.openid.loadAssociation (node_modules/passport-google/node_modules/passport-openid/node_modules/openid/openid.js:111:5) at _checkSignatureUsingAssociation (node_modules/passport-google/node_modules/passport-openid/node_modules/openid/openid.js:1221:10) at _checkSignature (node_modules/passport-google/node_modules/passport-openid/node_modules/openid/openid.js:1211:5) at _verifyAssertionAgainstProvider (node_modules/passport-google/node_modules/passport-openid/node_modules/openid/openid.js:1174:3) at _verifyDiscoveredInformation node_modules/passport-google/node_modules/passport-openid/node_modules/openid/openid.js:1145:16) at openid.discover (node_modules/passport-google/node_modules/passport-openid/node_modules/openid/openid.js:668:7) 代码片段使用护照: app.set('port', process.env.PORT || 8080); app.set('views', __dirname + '/views'); app.set('view […]

PHP,nodeJS和会话

我有一个经典的Apache服务器提供的PHP文件,和一个nodeJS服务器(与socket.io,但没有快速/连接)用于实时事件pipe理该PHP网站。 我有时需要authentication连接到nodeJS服务器的客户端,但是当用户重新加载页面时,这个authentication会丢失,因为它也重新加载了socket.io客户端(我在服务器上存储了套接字ID,每次刷新都会丢失) 问题是:有没有办法保持连接在socket.io,或链接的Apache PHP会话和nodeJS服务器的方式? 或者也许一种方法来保持使用cookie的身份validation(知道我必须存储敏感数据,如用户密码和密钥)?

connect-mongo MongoStore会话如何保存?

我使用Passport实现会话,但为了存储会话,我尝试使用mongoose连接connect-mongo 。 这是我的代码(会话部分): var express = require('express') var mongodb = require('mongodb') var mongoose = require('mongoose') var bodyParser = require('body-parser') var cookie = require('cookie-parser') var connect = require('connect') var passport = require('passport') //var flash = require('connect-flash') var session = require('express-session'); var MongoStore = require('connect-mongo')(session); var LocalStrategy = require('passport-local').Strategy; var app = express() var BSON = mongodb.BSONPure […]

PassportJS – 自定义callback并将Session设置为false

是否有可能使用自定义callback和禁用会话? 在文档中,它显示了如何禁用会话和自定义callback,但我如何将它们合并? app.get('/login', function(req, res, next) { passport.authenticate('local', function(err, user, info) { if (err) { return next(err); } if (!user) { return res.redirect('/login'); } req.logIn(user, function(err) { // I'm getting an error here // [Error: Failed to serialize user into session] if (err) { return next(err); } return res.redirect('/users/' + user.username); }); })(req, res, next); […]

使用node.js和session.socket.io进行安全authentication?

我正在使用最新版本的node.js和session.socket.io ,这是我设置会话的方式(请注意,我没有使用HTTPS连接,所以secure: true ): app.configure(function() { app.use(cookieParser); app.use(express.session({ signed: true, store: sessionStore, secret: 'SECRET', cookie: { maxAge: 24 * 60 * 60 * 1000, httpOnly: true } })); }); var sessionSockets = new SessionSockets(io, sessionStore, cookieParser); // Later sessionSockets.on('connection', function(error, socket, session) { // session could be used here to detect if user is logged […]

控制会话以express和连接中间件开始

有一种方法来控制会话何时开始连接的会话中间件? 例如,如果我有快速应用程序configuration: var app = express(); app.configure(function(){ app.use(express.bodyParser()); app.use(express.methodOverride()); app.use(express.cookieParser('secret')); app.use(express.session({ store:sessionStore, … })); }); 然后在每个请求中,如果没有给出会话cookie,则启动一个会话。 如果我只想在用户通过身份validation时才开始会话,该怎么办? 例如,说我有两个路线/protected和/login 。 如果有人点击/protected没有会话cookie,中间件将不会启动一个新的会话。 ( req.session为null ) 如果有人点击/protected会话cookie,中间件将检查 cookie是否存在匹配的活动会话并设置req.session ,但不会启动新的会话。 ( req.session可以有一个值或为null ) 如果有人用正确的参数点击/login ,则显式启动一个会话,然后只设置一个cookie。 开始会议的唯一方法应该是明确的: app.post('/login', function(req, res, next) { // connect to database and validate user… db.authenticate( req.body.user, req.body.pass, function(allow) { if (allow) { // START SESSION […]

使用Express和Socket.IO解释会话支持?

我正在寻找一些帮助搞清楚一个服务器上的会话,依赖express和socket.io。 大多数情况下,目标是处理诸如将用户标识符与socket.io会话标识进行配对,维护重新连接状态以及能够轻松地将服务器上的任何angular色分组。 很感谢任何forms的帮助。 谢谢。

如何在服务器重新启动时在节点js中维护持久性会话?

据我迄今为止从服务器重新启动后,使会话持久性的计算器的答案。 有4种可能的方式,我考虑用我的意思应用程序。 cookie-Sessions https://www.npmjs.com/package/cookie-session 使用Jsonnetworking令牌(JWT) https://www.npmjs.com/package/jsonwebtoken 使用connect-mongo / connect-redis passport.js 现在我的疑问是,如果我将重新启动我的服务器在Mongo和Redis。 会话将仍然在那里,因为他们是外部数据存储。 但如何使我的会话持久使用JWT和cookie会话。 这些会话variables在哪里存储。 在passport.js的情况下,我遇到的解决scheme是使会话持久性是将会话数据存储在connect-mongo / connect-redis中。 有没有其他的方式在护照使会议持续?

Codeigniter在nodejs中读取会话cookie

我正在做一个codeigniter的应用程序,并为实时的东西实现nodejs。 我想检查用户是否使用nodejslogin。 通过下面的代码,我可以在nodejs服务器中获得codeigniter会话ID: var server = require('https').createServer(options, function(request, response){ var cookies=(function(str){ var result={}; str.split(/;\s+/).forEach(function(e){ var parts=e.split(/=/,2); result[parts[0]]=parts[1]||''; }); return result; })(request.headers.cookie), sessionCookieName='ci_session', sessionId=cookies[sessionCookieName]||''; console.log(sessionId); }).listen(8080); codeigniter会话存储在数据库中,encryption设置为true。 而sess_match_ip = TRUE,sess_match_useragent = TRUE; 现在我的问题是,什么是检查用户是否login的好方法? 我已经安装了node-mysql客户端。 我知道CI做的是这样的: SELECT * FROM (`ci_sessions`) WHERE `session_id` = 'blabla' AND `ip_address` = '127.0.0.1' AND `user_agent` = 'Mozilla/5.0 (Macintosh; Intel Mac OS X […]