Tag: 会话

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){ 和, […]

passport.js无法在实时生产服务器中存储会话

当我在端口8080 在本地运行服务器时,它在正常validation和序列化数据时正常工作。 但是,当我在现场制作上运行我的代码时,它通常是通过身份validation的,但不会将任何数据存储到会话中! 我不知道什么中间件应该为这件事情设置?

NodeJS在使用web套接字时存储数据的可能性最好

我正在用NodeJS和Socket.io开发一个基于回合的游戏,在这个游戏之间存储了大量的信息。 我想知道什么是最好的方法来处理可以说,成千上万的用户。 目前我使用全局variables来存储与“决斗”全局variables中的匹配相关的所有内容,其中关键是dynamic创build的空间: duels[room].character_1 = character_1; duels[room].character_opponent_1 = character_opponent_1; duels[room].player_1_moves = {//really big object}; duels[room].player_2_moves = {//really big object}; 我不确定这是否是处理数千用户的最佳方式。 至less记忆明智。 我见过2个其他选项: 第一:使用会话variables来存储数据,但是这在我看来会占用大量的服务器内存(RAM),最好的全局variables或会话? 或者他们都很糟糕? 第二:我正在使用MongoDB,是否可以select在我的数据库中不断插入和检索信息并将其存储在那里? 我有一个感觉,如果我发送太多的查询到我的数据库将崩溃。 基本上,在这一点上我不知道在哪里存储所有这些信息,而不冒我的服务器性能的风险。 我接受任何方法。

Passport在Node.js中使用express的本地策略会话

我是Node.js中的新手,并使用passport-local策略进行login会话。 我已经在我的networking应用程序中设置了所有的东西,但是会话中遇到了很大的问题。 我尝试了多个用户可以同时login到我的networking应用程序,但有一个问题。 用户之一(例如用户名是Paul)首先login,然后另一个用户(Chris)login,然后Paul的我的web应用程序的视图更改为Chris的视图。 我不知道你们明白我的意思,但这是我在Node.js中的一个代码 app.get('/location', isLoggedIn, function(req, res){ var user_temp = {user: ''}; user_temp.user = global_username; res.render('location/index1', user_temp); }); 下面的代码是Passport local-Strategy var LocalStrategy = require('passport-local').Strategy; passport.use('local-login', new LocalStrategy({ usernameField : 'email', passwordField : 'password', passReqToCallback : true }, function(req, email, password, done) { User.findOne({ 'email' : email }, function(err, user) { if (err) return […]

Express在更改auth头时会创build不同的会话

我是新来expression,我试图创build会话时,用户login到我的应用程序。我正在使用护照进行身份validation。 要login用户,我正在创build基本策略和成功的基本策略我正在创build一个JWT令牌,我在客户端存储在cookie中,我使用JWT战略为随后的请求。 但我注意到,快速会话正在创build一个会话,当我login其中有基本标题和另一个会话为JWT标题的后续调用。 这里是我的代码,我login保存会话 signin = function(req, res, next) { passport.authenticate('basic', function(err, user, info) { if (err) { return next(err) } if (!user) { return res.status(401).json({ error: 'message' }); } var token = jwt.encode({ user: user}, config.db.secret); res.cookie('token', token, { maxAge: 900000, httpOnly: true, path: '\/', Secure: true }); res.status(200).json({ success: true, firstName: user.firstName }); […]