Tag: 会话

Express SessionID与Cookie中的SessionID不同

我有一个相应的问题,使用给出的例子。 在这个例子中,会话在WebSocket中被使用,首先重载: socket.on('set value', function (val) { sess.reload(function () { sess.value = val; sess.touch().save(); }); }); 试图在我自己的应用程序中使用它,我得到以下exception: sess.reload(function () { ^ TypeError: Object #<Object> has no method 'reload' 我认为问题是,没有人将variablessess定义为会话: io.listen(app).set('authorization', function (data, accept) { if (!data.headers.cookie) return accept('No cookie transmitted.', false); data.cookie = parseCookie(data.headers.cookie); data.sessionID = data.cookie['express.sid']; store.load(data.sessionID, function (err, session) { if (err || […]

我可以通过express next()函数发送数据吗?

我正在开发一个需要进行身份validation和会话pipe理的web应用程序。 我已经完成了后端会话的东西。 现在我想在UI上显示login的用户。privateContent是一个validation用户是否login的function,如下所示: … app.get( '/authRequired', queries.privateContent , routes.tasks ); … 这里是queries.privateContent: … exports.privateContent = function ( req, res, next ) { if ( req.session.user ) { var username = req.session.user.username; User.findOne( { 'username': username }, function ( err, obj ) { if ( true ) { next(); } else { res.redirect('/'); } }); } […]

数据库会话在nodejs / express中的支持

expressjs / nodejs是否支持(通过模块?)数据库会话? 我来自PHP / CodeIgniter世界,我喜欢将会话数据存储在mysql数据库表中的function。 这种方法是否与nodejs web应用程序一起使用?

节点JS中的会话

我如何维护节点JS中的SESSIONS? 例如,我想使用Node Js在SESSION中存储UserID。 我怎样才能做到这一点在节点JS? 我也可以在PHP中使用Node JS SESSION吗? 我想要 <?php $_SESSION['user'] = $userId; ?> 在节点Js。

NodeJS redis连接会话标识在应该保持不变时被重新生成

我试图在NodeJS中使用Redis的标准会话持久性: var express = require('express'); var RedisStore = require('connect-redis')(express); var app = module.exports = express.createServer(); // Configuration app.configure(function(){ app.use(express.bodyParser()); app.use(express.cookieParser()); app.use(express.session({ secret: "keyboard cat", store: new RedisStore, key: 'sid' })); }); app.get('/', function (req, res) { if (req.session.isValid) { console.log("There is an existing session."); } else { req.session.isValid = true; console.log("New session."); console.log('Old session ID: […]

使用Redis Cloud和Heroku正确configuration节点会话存储

目前还不清楚使用Redis Cloud和Heroku的正确configuration参数是什么,并且在线找不到function实例。 这是我现在的代码: const express = require('express') const session = require('express-session') const RedisStore = require('connect-redis')(session); … const server = express() server.use(bodyParser.json()) server.use(bodyParser.urlencoded({ extended: false })) server.use(cookieParser()) server.use(session({ secret: token_secret, // create new redis store. store: new RedisStore({ url: 'redis://rediscloud:…@…redislabs.com:11111'}), resave: true, saveUninitialized: true })); 如果Redis Cloud和Heroku作为会话存储(使用快速会话),是否应该将resave和saveUnitialized设置为true或false? 此外,cookieParser会影响会话,需要在那里? 或者是单独parsing来自客户端的cookie,而与Redis的服务器端会话存储无关? 另外,如果cookieparsing器有一个秘密传递给函数? 最后,bodyParser应该在server.use(session)之前还是之后,并且应该将urlencoded extended设置为true或false?

Node.js无状态/无Cookie会话API身份validation

我正在build立一个API,并试图找出许多上下文中的身份validation。 会话和密码validation API需要为我们创build和部署的客户端应用程序提供服务,并使用密码处理已authentication的请求。 发送每个请求的密码并不是一个好主意,因此首先点击login端点并获取会话ID会更有意义。 有问题的Web应用程序是用AngularJS编写的,并且应该在localStorage中跟踪自己的会话,以减轻会话劫持,并消除对cookie的依赖,以跟踪会话。 Web应用程序需要发送每个请求的会话标识符,目前在请求的主体中这样做。 这个碎片非常容易,并与API紧密结合。 我宁愿传递所有的身份validation信息,通过一个头,最好 – 而不是通过请求体,url和头部传播的许多不同的领域。 会话存储 当然, Redis真棒。 会话存储很简单,并自动垃圾收集。 不幸的是,redis中的会话难以pipe理:我不能轻易撤销给定用户的所有会话。 通过将会话存储在真正的redis-datastructure而不是全局密钥空间来添加该function,可以删除添加键控TTL的function。 我目前的解决scheme是在MongoDB用户集合中存储会话列表,并在会话活动(例如login/注销)上垃圾收集过期的会话。 会话使用connect-redis模块存储在redis中,但是随每个请求发送的会话都不包含在cookie中。 目前,我有一小块中间件,它将会话标识符从请求体中取出并放入一个req.cookies对象中。 var express = require('express'); var RedisStore = require('connect-redis')(require('connect')); var app = express(); app.use(function(req, res, next) { req.cookies = {session: req.body.session}; }); app.use(express.session({ store: new RedisStore({ client: redisClient, prefix: 'session:' }), key: 'session', secret: 'all mine' }); […]

每个请求使用不同的Cookie域进行快速会话?

我有一个应用程序可以从多个不同的域访问的情况。 例如, foo.com和bar.com都可以在理论上指向我的应用程序。 此外,他们的子域也可以指向我的应用程序,例如red.foo.com和blue.foo.com 。 我正在使用Express cookie会话,并且会话的初始化代码如下所示: app.use(express.session({ secret: "secret", cookie: { domain: ".foo.com" }, store: new MongoStore({ db: db }) })); 这对于用户浏览foo.com或其子域名时效果很好,但bar.com不起作用。 我需要同时拥有两个。 理想情况下,我会将它设置为不同的域每个请求,但我不知道我会怎么做。 我的请求是非常asynchronous的,如果我在每次请求时都将其设置为整个应用程序,那么当两次调用同时进入时,我担心这可能不起作用。 这是可能吗? 有没有人有任何想法来解决这个问题?

Connect-mongo会话不会被自动删除

我有一个使用NodeJS,Express,MongoDB和connect-mongo的应用程序。 我的问题是,会话过期似乎不会自动从MongoDB中删除,所以数据库大小增长,直到磁盘已满。 connect-mongo的开发者写了一条评论 : connect-mongo会要求MongoDB删除在当前date之前过期的所有会话。 但是,这似乎并没有发生在我的情况。 我的configuration是: var express = require('express'); var MongoStore = require('connect-mongo'); var sessionStore = new MongoStore({db: 'myappsession'}); var app = express.createServer(); app.configure(function(){ app.set('views', __dirname + '/views'); app.set('view engine', 'ejs'); app.use(express.bodyParser()); app.use(express.methodOverride()); app.use(express.cookieParser()); app.use(express.session({ secret: "myappsecret", store:sessionStore })); app.use(app.router); app.use(express.static(__dirname + '/public')); }); 而我目前正在运行以下版本: 节点: 0.7.0-pre connect-mongo: 0.1.7 表示: 2.5.2 连接: 1.8.5

socket.io并表示4个会话

我想在我的socket.io应用程序中访问express 4会话。 我有点新的Node,我有一些麻烦实施这个function。 我发现一个npm模块,可以访问express 4会话: https : //www.npmjs.org/package/session.socket.io-express4或https://github.com/eiriklv/session.socket.io 如果你看下面我的app.js代码,我会在session , sessionStore或者cookieParser设置上做错误的事情,因为我不能让这个模块工作。 // init modules var express = require('express'); var helmet = require('helmet'); var fs = require('fs'); var path = require('path'); var favicon = require('static-favicon'); var logger = require('morgan'); var cookieParser = require('cookie-parser'); var bodyParser = require('body-parser'); var session = require('express-session'); var memoryStore = session.MemoryStore; var […]