Tag: 会话

会话ID对于不同的客户端Nodej是相同的

目前,我们正在使用express-session与passport.js和connect-redis将数据存储在connect-redis从而在cookie中设置会话。 我有多个节点服务器服务请求。 对于没有会话的每个请求,我正在创build一个新的会话。 有时候,一个现有的会话ID被分配给一个新的请求。 创build一个独特的会话之前,我正在检查cookie是否存在…如果是,那么我不创build一个新的会话。 但是在这样做的时候,我们看到同一个会话ID被不同的客户端共享。 我怎么知道它是相同的? 第一个用户尝试login,它使login成功,并build立会话,并提供有关用户configuration文件的正确信息。 第二个用户尝试login,它会提供成功的login,但将会话设置为先前的第一个用户会话,因此第二个用户将在configuration文件部分看到第一个用户信息。 会议执行代码: function sessionImplementation() { return function (req, res, next) { if(/ucompany=s%3A/.test(req.headers['cookie'])){ var cookie = req.headers['cookie'].split("ucompany=s%3A"); var zCookie = cookie[1].split("."); var genid = zCookie[0]; return session({ genid:function () { return genid; }, store: redis, cookie: { maxAge: new Date(Date.now() + (7 * 24 * 60 * 60 […]

会话没有定义sailsjs

我正在写一个策略checkSession,基本上会在一段时间后破坏会话。 checkSession.js (policies/checksession.js) var moment = require('moment'); function checkLastActivity(req) { if (!req.session.lastActivity) { return false; // no session. } else { return true; } } function setActivity(req) { req.session.lastActivity = moment(new Date()).format(); return true; } function updateActivity(req, res, updated) { req.session.lastActivity = moment(new Date()).format(); updated(null, { isdestroted: 0 }); } function checkIdleTime(req, idleTime) { try […]

将快速会话存储在Cookie中

我已经find了各种方法将会话ID存储在expressjs的cookie中。 我真正想要的是将所有会话数据存储在cookie中,而不必担心服务器端会话存储。 为什么? 我的会话数据很小,在我的情况下,会话存储会增加不必要的复杂性。 这可以用快递吗? 奖金分,如果你知道如何encryption。

会话存储的用途是什么?

我正在使用koa和护照,因此我正在使用koa通用会话中间件来处理我的会话。 现在,与expressjs 会话中间件不同,文档中没有大的声明: 默认的服务器端会话存储器MemoryStore故意不是为生产环境而devise的。 假设koa通用会话的MemoryStore已准备好供生产使用,那么为什么我会使用一个重负载的会话存储,如mysql或mongodb来进行整天来来往往的会话呢? 什么额外的function会使用一个给我的记忆库不?

护照本地策略不保存cookie或会话中的用户

我试图使用快递4护照,并通过本地策略进行validation。 我试图让一个简单的设置工作,但我有问题。 我尝试使用授权中间件function进行身份validation… deserializeUser永远不会被调用,req.user是未定义的,并且会话和cookie中缺less用户数据。 谁能帮我? 我的server.js文件: var express = require('express'); var app = express(); var path = require('path') var port = process.env.PORT || 3000; var argv = require('minimist')(process.argv.slice(2)); var dust = require('express-dustjs') var logger = require('morgan'); var cookieParser = require('cookie-parser'); var bodyParser = require('body-parser'); var session = require('express-session'); var passport = require('passport'); var LocalStrategy = […]

使用Androidlogin时,Passport.js会话未设置

在我的AuthController.js中,我检查login是否成功,并在会话中设置一个哈希码: req.logIn(user, function (err) { if (err) res.send(err); var redirectTo = req.session.redirectTo ? req.session.redirectTo : '/user/show/'+user.id; delete req.session.redirectTo; bcrypt.genSalt(10, function (err, salt) { bcrypt.hash(user.email, salt, function (err, hash) { if (err) { console.log(err); } else { req.session.passport.user_type = user.type; req.session.passport.user_avatar = user.avatar; req.session.passport.email = user.email; req.session.passport.token = hash; // here session is set! also when […]

Express – socket.io – 会话。 将用户标识作为套接字标识

我正在使用express-socket.io会话 。 我想我可以通过查看教程来设置基本configuration: //BASIC CONFIG? var clients = []; var session = require("express-session")({ secret: 'some key', resave: true, saveUninitialized: true }); var sharedsession = require("express-socket.io-session"); app.use(session); io.use(function(socket, next){ next(); }); io.use(sharedsession(session, { autoSave:true })); io.on('connection', function(socket) { console.log("CLIENT CONNECTED"); var session = socket.handshake.session; clients.push(socket); socket.on('disconnect', function() { console.log("CLIENT DISCONNECTED"); }); }); 我现在想要做的就是引用特定的客户端套接字,而不是由套接字引用,而是由应该分配给该套接字的会话标识引用。 当用户login时发生这种情况: req.session.user_id = […]

什么时候使用快速会话创build一个cookie?

我在一个项目中使用快速会话,并且很努力的去理解它何时在浏览器上创build一个cookie来与会话存储一起使用。 在我的项目中,当我请求我的主页(“/”)时,不会创buildcookie,但是当我请求任何其他页面时,会创build一个cookie。 如果我远离主页(即“/ user / signup”),请从浏览器中删除cookie,然后返回主页,但不会为会话存储创buildcookie。 我的问题是理解为什么它会为除主页以外的其他请求创build一个会话cookie。 var app = express(); app.use(express.static(path.join(__dirname, 'public'))); app.use(logger('dev')); app.use(bodyParser.json()); app.use(bodyParser.urlencoded({ extended: false })); app.use(validator()); app.use(cookieParser()); app.use(session({ secret: 'mysupersecret', resave: false, saveUninitialized: false, store: new mongoStore({ mongooseConnection: mongoose.connection }), cookie: {maxAge: 180 * 60 *1000} })); app.use(flash()); app.use(passport.initialize()); app.use(passport.session()); app.use('/user', userRoutes) app.use('/', indexRoutes); router.get('/', function(req, res, next) { Product.find(function(err, docs){ […]

客户端会话与nodejs中的expression会话之间的差异

还有一个类似的问题,但它没有回答客户端和快速会话如何彼此不同。 我相信客户端会话在客户端浏览器上存储cookie,并在mongo商店等数据库中显示会话存储cookie。

会话不会保存在会话variables中。 导航后,req.user不存在

背景: 我有一个运行在端口4200上的angular度cli,以及运行在3000上的服务器端api node.js。 我发现会话护照值不会保存后,与本地护照login。 所以当我尝试导航到另一个页面login后,其不持有护照,会话中的variables,因为它应该是,需要调用req.user 出于某种原因,服务器不调用反序列化用户。 请求login后redirect到页面/testing。 更新: login我使用端口4200发送一个请求,使用以下代码:(angular2 / 4) performLogin(name: string, password: string): Observable<Comment[]> { var params = new URLSearchParams(); params.append('username', name); params.append('password', password); url = "SITE:3000/api/login"; return this.http.post(this.url,params, this.options) .map(result => result.json()) .do(result => this.result = result); } 更新2:插入信用请求客户端双面。 在每一个请求login – >然后调用testing页我总是得到: ReferenceError: User is not defined at /root/mafiagame/src/config/passport.js:32:9 at pass (/usr/lib/node_modules/passport/lib/authenticator.js:347:9) […]