Tag: 会话

使用会话设置created_by用户与一个Mongoose插件

即时通讯使用Node.js ,我试图做一个Mongoose插件,将created_by值设置为当前login的用户ID。 用户存储在会话中。 lastModifiedPlugin = (schema, options) -> schema.add created_by: type: ObjectId default: -> session.user._id // Need access to session created_at: type: Date default: Date.now 我正在使用connect-mongo来获取MongoDB会话存储。 express = require "express" MongoStore = require("connect-mongo")(express) 我知道如何从请求对象中获取会话,或者在拥有sessionID时使用会话存储。 问题是:在这种情况下,我没有请求,也没有会话,也没有sessionId。 我的问题:如何在Mongoose插件中获得会话? 或者如何以不同的方式实现这个function,就像轻松一样? 在我看来,这是一个非常常见的用例。

nodejs不能读取phpsessid并返回未定义的错误

我只是喜欢这篇文章阅读nodejs中的会话,并从memcached读取会话数据,但我有一些问题,从phpsessid.when读取数据,我节点这个index.js脚本 var app = require("http").createServer(handler), fs = require("fs"), memcache = require("memcache"), co = require("./cookie.js"); app.listen(7070); //On client incomming, we send back index.html function handler(req, res){ fs.readFile(__dirname + "/index.html", function(err, data){ if(err){ res.writeHead(500); return res.end("Error loading index.html"); }else{ res.writeHead(200); res.end(data); } }); //Using php session to retrieve important data from user var cookieManager = new co.cookie(req.headers.cookie); […]

会话存储获取并设置每个http请求?

我用https://github.com/visionmedia/connect-redis使用node.js将会话variables存储在redis中。 我运行redis-cli monitor ,注意到在一个页面加载中,有3组get和setex命令被执行。 这三组来自我的页面加载( favicon.ico , /和index.css )所做的3个http请求。 我的问题:在每个http请求上运行redis get和setex是否正常? 每一对包含相同的数据。

使用ExpressJS在AppFog上进行会议

我在ExpressJS应用程序中遇到问题。 在本地它的作品完美,但是当我在AppFog上托pipe我的应用程序时,我得到了会话的一些问题,他们有时会丢失…在我的pipe理面板。 我不知道为什么,但是,当页面刷新,会议不再工作… var restrictedArea = function(req, res, next) { if( req.session.access ) next(); else res.redirect('/signin'); } // Get/Post example on admin panel app.get('/posts/add', restrictedArea, admin.addPost); app.post('/posts/add', restrictedArea, admin.savePost); app.post('/posts/delete', restrictedArea, admin.deletePost); app.get('/posts/edit/:id', restrictedArea, admin.editPost); 我的app.configure: app.configure(function () { app.set('port', process.env.PORT || 3000); app.set('views', __dirname + '/views'); app.set('view engine', 'jade'); app.use(express.favicon()); app.use(express.logger('dev')); app.use(express.bodyParser()); app.use(express.static(path.join(__dirname, 'public'))); […]

为什么我的req.user在加载时始终为空?

我已经挣扎了好几天,取得了一些很好的进展,但是我不能让我的课程工作得很好。 我已经成功地使用Passport来与Facebook进行身份validation。 当我用FBbutton点击我的login时,会话完全加载,我有我的req.user对象都准备好去,但在我看来,我应该只需要做一次。 我知道护照保存了一个cookie。 我已经看了看,看到工作。 我试图检测用户是否已经login在我的索引页的负载,但是当我加载页面的req.user对象始终为空,我的passport.deserializeUser方法永远不会被调用来加载它(如果我点击login到FBbutton它确实被调用)。 所以我的问题是,你如何告诉护照页面加载检查cookie和加载用户会话,如果有的话? 更新 – 好的,所以对于那些稍后发现这个问题的人,我只想回顾一下我在这里学到的东西(感谢那些评论过的人)。 希望这会帮助其他人。 我习惯了不pipe服务器如何生存的.NET cookies。 Node.js和护照不在同一个前提下工作。 默认情况下,node.js使用内存来保持会话。 当您closuresterminal/命令行中的节点(每次更改服务器代码时都必须执行此操作)时,内存存储cookie信息将被重置,因此任何与其关联的cookie都是无意义的。 为了解决这个问题,我安装了Redis( http://cook.coredump.me/post/18886668039/brew-install-redis ),并把它作为我的商店( http://www.hacksparrow.com/use-redisstore-而不是memorystore-express-js-in-production.html )。 这将在Azure上工作,这是我计划的生产服务器,因此一切正常。 好的,这是一些代码。 我不确定放什么部分… 这是server.js /** * Module dependencies. */ var express = require('express') , app = express() , partials = require('express-partials') , http = require('http') , server = http.createServer(app) , io = require('socket.io').listen(server) , […]

PHP自定义session.serialize_handler JSON

我需要在Node.js中访问PHP会话,所以我认为一个好主意是将会话编码为JSON,并将其解码为Node.js. 我知道我可以设置session.save_handler = memcached但有没有办法设置session.serialize_handler = some_json_handler ? 或者我必须使用session_set_save_handler自己编码? 任何帮助非常感谢!

req.originalUrl没有设置restify(连接会话中间件需要)

当我尝试使用连接会话中间件使用restify时,出现错误。 会话中间件期望req.originalUrl但restify不设置该属性。 (它只设置req.url)这会导致会话代码中的exception。 有没有解决方法? 谢谢Sharath

Node.js有状态服务器

我是一般的Node.js和服务器端JS的新手。 我来自Java EE,我习惯于使用有状态的对象(不是EJB,我使用CDI),例如,MVC。 我的目标是保留一些与例如会话有关的数据。 Java EE中的CDI知道以下状态范围: 应用程序作用域(=与单例模式相同) 会话作用域(状态保留用户的会话生命周期,例如login的用户) 对话的范围(状态保留用于已识别的对话,例如购物车) Flash作用域(两个请求之间保持状态) 如何使用Node来完成所有这些工作而不使用数据库,只需要使用有状态的对象?

cookieparsing器中的秘密集和会话在express.js中存储相同的东西?

Node.js提供的身份validation示例使用以下代码段: app.use(express.cookieParser('shhhh, very secret')); app.use(express.session()); 但是, express.js会话的文档使用以下内容: app.use(cookieParser()) app.use(session({ secret: 'keyboard cat', key: 'sid', cookie: { secure: true }})) 这很混乱。 两个秘密是一样的吗? 如果我将会话存储在数据库中,应该使用哪种方法?

无法从会话存储获取会话

我已经阅读和复制粘贴了很多关于使用socket.io,express和会话存储会话的例子。 但是,每次我调用sessionStore.get() (或sessionStore.load() ),我所得到的是undefined 。 为什么? 这是我的代码(简体): var app = require('express')(), session = require('session'), MongoStore = require('connect-mongostore')(session); app.use(session({ store: new MongoStore({ 'db': 'sessions' }); })); io.use(function(socket, next) { var req = socket.request, reqCookie = cookie.parse(req.headers.cookie), sessid = reqCookie['connect.sid']; // == actual session ID sessionStore.get(sessid, function(err, session) { err // == undefined session // == undefined […]