Tag: 会话

无法在Layer.session – ExpressJS会话中读取未定义的属性“connect.sid”

在ExpressJS 4中使用会话时遇到问题。 我曾尝试在server.js(我设置我的应用程序的configuration)和routes.js(我定义我的路线)中添加会话。 这是我一直得到的: TypeError: Cannot read property 'connect.sid' of undefined at Layer.session [as handle] (/Users/larissaleite/Documents/Routing/node_modules/express-session/index.js:115:32) at trim_prefix (/Users/larissaleite/Documents/Routing/node_modules/express/lib/router/index.js:226:17) at c (/Users/larissaleite/Documents/Routing/node_modules/express/lib/router/index.js:198:9) at Function.proto.process_params (/Users/larissaleite/Documents/Routing/node_modules/express/lib/router/index.js:251:12) at next (/Users/larissaleite/Documents/Routing/node_modules/express/lib/router/index.js:189:19) at Layer.expressInit [as handle] (/Users/larissaleite/Documents/Routing/node_modules/express/lib/middleware/init.js:23:5) at trim_prefix (/Users/larissaleite/Documents/Routing/node_modules/express/lib/router/index.js:226:17) at c (/Users/larissaleite/Documents/Routing/node_modules/express/lib/router/index.js:198:9) at Function.proto.process_params (/Users/larissaleite/Documents/Routing/node_modules/express/lib/router/index.js:251:12) at next (/Users/larissaleite/Documents/Routing/node_modules/express/lib/router/index.js:189:19) 我这样定义会话(server.js): var express = require('express'); var app = express(); // […]

强制share.js使用相同的快速会话数据

我有一个简单的express应用程序,使用session中间件和passport-local中间件。 然后我使用share.js和browserchannel通过share.listen(stream)将数据传输到服务器。 全部与这里的文档保持一致。 我的问题是,我不能访问stream中的会话数据(由passport-local修改,并包含login的用户ID)。 我需要它能够限制/授予client.on('message',function(data){..})中的访问权限。 基于一些逻辑,但首先重要的是检查消息来自login用户。 在那里,如果我尝试读取ID,它将与req.user._id中的什么有所不同。 似乎有share.js或browserchannel使用一些不同的会话,也许?.. 代码如下: var app = express(); var express = require('express'); … // SETUP AND INIT app.use(cookieParser()); app.use(bodyParser.json()); app.use(bodyParser.urlencoded({ extended: true, limit: 1024 * 1024 * 10 })); app.use(methodOverride()); app.use(session({ secret: global.CONFIG.session.secret, maxAge: new Date(Date.now() + 1000 * 60 * 60 * 24 * 2), store: new MongoStore(global.CONFIG.mongo), resave: […]

节点快速会话中的会话variables不会持续到下一个请求

我正在使用内存存储的基本节点快速会话设置,我有这个代码在服务器上: app.use(require('express-session')({ secret: 'keyboard cat', resave: false, saveUninitialized: true, cookie: { secure: true } })); app.post('/api/logIn', function(req, res) { req.session.userName = req.body.userName; } app.get('/api/getProfile', function(req, res) { User.findOne({'userName' : req.session.userName}, function (err, userProfile) { console.log('getProfile executed for user:' + req.session.userName); if (err) throw err; console.log(userProfile); }); }); 问题是来自getProfile路由的req.session.userName是未定义的,虽然它不在之前的login路由请求中。 我检查了HTTP头,奇怪的是从服务器或客户端没有处理cookie的头文件。 现在我不知道可能是什么问题。

Express 4 session TypeError:对象不是一个函数

我正在用Express 4学习nodejs来开发一个web应用程序,并且关注一些博客,当尝试启动项目时显示这个错误: [nodetest1]# npm start nodetest1@0.0.0 start /root/node_proyects/nodetest1 node ./bin/www /root/node_proyects/nodetest1/app.js:64 app.use(session({secret: 'blablabla'})); ^ TypeError: object is not a function at Object.<anonymous> (/root/node_proyects/nodetest1/app.js:64:9) at Module._compile (module.js:460:26) at Object.Module._extensions..js (module.js:478:10) at Module.load (module.js:355:32) at Function.Module._load (module.js:310:12) at Module.require (module.js:365:17) at require (module.js:384:17) at Object.<anonymous> (/root/node_proyects/nodetest1/bin/www:7:11) at Module._compile (module.js:460:26) at Object.Module._extensions..js (module.js:478:10) at Module.load (module.js:355:32) at Function.Module._load […]

如何在node.js中使用express来实现android应用程序中的服务器端会话?

你好我正在做一个Android应用程序,我有多个帐户login一次现在我的问题是,我为多个login我应该使用会话来validationlogin每个帐户用户。现在我在服务器端快速使用我已经阅读了很多有关在node.js中存储会话的文档 快速会话(虽然它只适用于开发,但不适用于生产,但不适用于我的应用程序) Cookie的会话 连接-的Redis 连接 – 蒙戈 我也听说过json的networking令牌,我可以生成唯一的令牌,然后我可以将令牌传递给客户端使用res.json({user_id:“user1”,令牌:“generated_token这里”))我也听说过护照但不知道如何做到这一点, 因为在护照我默认使用快递会话会不会有利于生产? 现在我的第一个问题是我已经阅读了所有的文档,并没有提到它在哪里我正在为每个正在注册的用户创build独特的令牌。 第二个问题,因为我正在使用我的服务器的Android应用程序将不会使用Cookie我将发送用户令牌参数req.body.token现在如何与当前user_id cmpare这个。 其实我没有得到控制的stream量,我的意思是如何在node.js会话中的一切事情。 此外,这个秘密是什么产生独特的令牌或什么。 另外我的意思是大约100000的用户现在注册我的应用程序,请告诉我相应的我应该使用哪种方式。 以前我问过这个问题,但是在那里我没有提到,因为我不是在做一个网站如何做到这一点(在我的情况下,将不会使用代币) 我知道我问的这个问题是非常含糊的,但请耐心与我,我只是想了解如何在node.js中使用会话 谢谢Anways

用JavaScript语句构造一个select器

我从一些会话variables创build一个MongoDBselect器。 如果会话值为空,则select器不应包含该条件。 我有一个select器 return Session.get('title') ? { title: Session.get('title') } : {}; 它应该如此运作; 不过,我想过滤更多的会话值。 如果我添加另一个,我得到 var title = Session.get('title'); var age = Session.get('age'); if (title && age) { return { title: title, age: age }; } else if (title) { return { title: title }; } else if (age) { return { age: age } […]

快速会话不保存nodejs

这个简单的例子不起作用。 在每个请求中,会话都是重新创build的,我不知道如何解决它。 var express = require('express'), expressSession = require('express-session'), app = express(); app.use(expressSession({ secret:'secret', resave:true, saveUninitialized:true, cookie:{ httpOnly:false, expires:false } })); app.all('/',function(req,res,next){ var session = req.session; if(session.count){ session.count++; } else{ session.count = 1; } console.log('id:',req.sessionID); console.log('count:',session.count); res.end(); }); app.listen(9090); console.log('server is running at http://localhost:9090'); 我试图保存请求的数量,但会话是在我每次提出请求时创build的。 //request >GET http://localhost:9090 //response id: gOqbVisxaW34qafRdb7-6shqYV0UurRg count: 1 //request again […]

快速护照会议不起作用

我正在构build一个Node应用程序,在这个应用程序中用户必须注册或login,然后当他们拖放一些元素(前端全部正常工作)时,我在数据库上存储他们的行为以及相应的userId。 我的理解是,一旦他们注册/login,我可以使用req.user来访问他们的ID并正确地存储他们的行动,但它不工作。 这是我的server.js文件中处理Passport的部分。 另外,我使用Sequelize作为ORM,但是所有处理数据库的东西在没有req.user部分的情况下都是完美的。 app.use(cookieParser()); app.use(bodyParser.json()); app.use(passport.initialize()); app.use(passport.session()); /****** Passport functions ******/ passport.serializeUser(function (user, done) { console.log('serialized'); done(null, user.idUser); }); passport.deserializeUser(function (id, done) { console.log("start of deserialize"); db.user.findOne( { where : { idUser : id } } ).success(function (user) { console.log("deserialize"); console.log(user); done(null, user); }).error(function (err) { done(err, null); }); }); //Facebook passport.use(new FacebookStrategy({ //Information […]

req.session不存储数据

我试图实现一个login系统,用户可以注册到一个网站,然后用他的帐户login。 一旦用户login,他可以编辑他的个人信息。 要检查用户是否login,我试图将req.session.isLoggedIn设置为true ,然后检查该值是否为true以访问网站的某些区域。 问题是,刚刚login之后,我打印了req.session的值,并看到刚设置的值,但在此之后,当我尝试在另一个路由中检查req.session.isLoggedIn的值时,我得不到值。 这是我的代码: const express = require('express'); const app = express(); var { Client } = require('pg'); var bcrypt = require('bcrypt'); var bodyParser = require('body-parser'); var cookieParser = require('cookie-parser'); var cors = require('cors'); var path = require('path'); var session = require('express-session'); var url = require("url"); app.use(cors()); app.use(express.static(path.join(__dirname, 'client/build'))); app.use(cookieParser()); app.use(bodyParser.json()); app.use(bodyParser.urlencoded({ extended: […]

在node.js中不是基于cookie的会话pipe理

我正在寻找node.js中基于非cookie的会话pipe理,就像在URL中传递参数(如&session_id= 。 当一个请求带有一个session_id时,它将知道会话已经过期。 我已经看过connect库,但它看起来只是基于cookie。