Articles of 会话

如何仅在经过身份validation时才给予会话? 任何其他中间件订单将无法正常工作

无论用户是否login,我都有创build会话的问题。 如果仅在用户成功login时才创build会话,我希望它。 否则,如果一个selenium机器人命中…例如,路由route('/users/:username')我的会议收集会充满会议,而不是真正的用户。 我让我的用户永远保持login状态,所以会话cookie设置为一年…如果会话不属于真实用户,则更糟糕。 只有authentication成功,我如何才能将会话返回给客户端? 我尝试了不同的路线和中间件的顺序,但是这是唯一正确工作的顺序。 app.use(session({ secret: 'bob', saveUninitialized: true, resave: true, name: 'curves', cookie: { secure: false, httpOnly: false, maxAge: 365 * 24 * 60 * 60 * 1000 }, store: new MongoStore(storeOptions) })); app.use(passport.initialize()); app.use(passport.session()); app.use('/', auth); app.use('/api/v1', router); // isLoggedIn WOULD NOT WORK IF I PLACED THIS BEFORE PASSPORT/SESSION MIDDLEWARE router.route('/users/:username') […]

如何在node.js中创build会话

在Node.js / Mongodb中,我想创build一个简单的会话,并将其提供给另一个页面,以便我可以知道用户是否已login。 我想知道他是否可以访问该页面,我该怎么做? 如何设置会话,以及如何获取值以检查是否必须redirect用户。 非常感谢!

Socket.io无法访问与Express相同的会话

我试图使用express和socket.io共享会话,我已经得到它曾经工作,但不知何故,它不会工作了。 我跟着这个链接如何与Socket.IO 1.x和Express 4.x共享会话? 并访问了socket.io上的会话,但它不是以某种方式相同的会话。 看来每个socket.io连接都会产生新的会话。 performance req.session.test =='有些值' Socket.io socket.request.session.test ==未定义 我是否错过了一些东西,或者是这些模块中的一些错误? – 编辑 – 编辑 – 编辑 – 发现是什么原因造成的问题是,当我设置cookie以下 cookie: { domain: '.local.fi' } 我需要跨子域有相同的会话,我怎么能做到这一点,因为许多页面成功? – 编辑 – 编辑 – 编辑 – 的package.json { "dependencies": { "express": "^4.13.4", "express-session": "^1.13.0", "socket.io-session": "^0.0.5", "express-socket.io-session": "^1.3.1", "socket.io": "^1.4.5" } } 开始我的index.js 'use strict' var express […]

Nodejs会话pipe理与java服务器会话pipe理相比较

考虑一个类似tomcat的Java web应用程序,它处理sessions 。 sessions存储在内存中(并且可以在服务器重启时serialized到硬盘)。 对于不能自行处理会话的nodejs应用程序,可以使用https://github.com/expressjs/session托pipe的一些名为expressjs/session库来开发会话。 在查看expressjs/session文档时,您会看到以下警告: 警告:默认的服务器端会话存储器MemoryStore故意不是为生产环境而devise的。 它会在大多数情况下泄漏内存,不会通过单个进程扩展,而是用于debugging和开发。 对我来说,将会话存储在内存中是目前在java web应用程序中所做的,没有任何问题。 现在我的问题是: 在会话中存储会话是一个不好的做法?! 如果在服务器重新启动期间失去会话并且性能不是我所关心的(因为我的应用程序规模),将会话存储在内存中仍然是nodejs不好的做法? (请参阅会话存储的用途是什么? )

client-sessions nodejs / Express – 错误:无法设置未定义的属性“mydata”

我试图在nodejs / Express中使用客户端会话中间件,并且出现以下错误: Cannot set property 'mydata' of undefined. 我也看了这个post,但是找不到更多的线索,为什么我可能会得到这个错误。 节点-JS-客户端会话而不是创造-REQ会话 var bodyParser = require('body-parser'); const express = require('express'); const app = express(); const clientSessions = require("client-sessions"); var urlencodedParser = bodyParser.urlencoded({ extended: false }); var router = express.Router(); app.use(clientSessions({ cookieName: 'mydata', // cookie name dictates the key name added to the request object secret: 'longsecretkeyorwhatever', […]

使用Redis存储的快速会话无法创build会话

我将Redis Express 4.13.1用作会话存储。 app.use(session({ store: new RedisStore, secret: '…', resave: false, saveUninitialized: true })); 它起初工作,但它不起作用(升级后的node.js)。 使用默认存储(内存)工作正常,但使用RedisStore,会话不会被创build。 这是创build会话的代码: router.post('/admin/login', (req, res, next) => { Auth.compare(…, () => { req.session.authorized = true; req.session.userId = id; console.log(req.session); // It prints well. Session is created res.redirect('/admin/main'); }); }); 那一刻,会议改变了: Session { cookie: { path: '/', _expires: null, originalMaxAge: null, […]

MEAN如何处理authentication?

我想知道基本stream程。 据我所知,当调用loginAPI时, passport.js创build会话并将其存储在mongo中。 谁创build会话? 谁创buildcookie? 快递还是护照? 我读到,当其他请求来了,用户对象被附加到它,使用会话ID。 谁做的? Express服务器或passport.js或其他人?

只使用JWT将会话数据保留在后端

我在我的应用程序上使用智威汤逊,我定义我的说法是这样的: const claims = { iss: process.env.DOMAIN, scope: "game", email: user.get("email") }; 我validation这样的令牌: nJwt.verify(socket.handshake.query.token, app.get("jwt.secret"), (err, decoded) => { if (err) return; console.log(decoded.body.email); // doge@doge.com }); 但是,这迫使我将会话数据添加到claims对象中。 相反,我想将令牌用作会话标识符,并将会话值保留在后端,例如: nJwt.verify(socket.handshake.query.token, app.get("jwt.secret"), (err, decoded) => { if (err) return; // Since we verified token, read token's session data from backend }); 有没有这样做的例子? PS。 我使用Redis,所以我可以通过Redis设置/获取值,但是我觉得这是不好的做法,因为我会自己开发整个会话。

nodejs sessionStore与cloudant app.use不一致的执行

我正在为nodeJS构build一个cloudant sessionStore,并被app.use语句发生了什么。 下面的两个app.use语句只是在一个被调用的会话中封装了一个函数,但是这会导致非常不同的行为。 例1: app.use('/login*', session( { store: sessionStore, secret: sessionSecret, resave: false, saveUninitialized: true, cookie: {secure: true, maxAge:24*60*60*1000}, genid: function (req) {return uuid.v4()} })); 在第一个例子中,sessionStore例程被调用,它创build和存储一个新的会话ID 例2: app.use('/login*', function () {session( { store: sessionStore, secret: sessionSecret, resave: false, saveUninitialized: true, cookie: {secure: true, maxAge:24*60*60*1000}, genid: function (req) {return uuid.v4()} })}); 在示例2中,将会话语句包装在一个函数def中只会调用sessionStore.on('disconnect'),然后调用sessionStore.on('connect')。 我想我错过了一些非常明显的东西,但是很难过。 两个问题: 为什么当放置在一个匿名函数内时session()的执行是不同的? 这是正常的,应该设置我的sessionStore.on('连接')来处理这种情况?

查询MongoDB嵌套字段

编辑 我现在已经意识到会话文档有一个FIELD session和一个VALUE值。 所以cookie: { passport: { user:… } } }不是嵌套对象,它们都只是一个大string。 所以,现在我可以使用$正则expression式查询来find我需要的: Session.find({ 'session': {$regex : ".*jane@gmail.com.*"} }, function(error, session){ =========原来的问题========== 我正在使用connect-mongo将用户的会话保存到MongoDB,我想查询session集合以查明用户是否有活动的会话。 用户名存储在sessions.cookie.passport.user下的集合中,但是我的查询返回空。 以下是一个会话文档示例: { "_id": "orxJPolqKQ11rZdYhTKMuS90G-zDrrKk", "session": "{ \"cookie\":{ \"originalMaxAge\":null,\"expires\":null,\"httpOnly\":true,\"path\":\"/\"}, \"flash\":{}, \"passport\":{ \"user\":\"jane@email.com\" // <- This is what I want! } // … More info here… 我到目前为止试过的查询: Session.find({ "session.cookie.passport.user": "jane@gmail.com" }, function(error, session){ 和, […]