Tag: 会话

节点请求如何处理会话

我使用node.JS和请求模块。 我的问题是,我需要对每个请求进行身份validation,因为会话在.then((response) => {})块之外被销毁。 如何将创build的会话保存在一个类中供以后使用? 我尝试了一切都没有成功。 这是一个不工作的代码片段 login() { const getLoginUrl = 'https://www.demourl.com/' const postLoginUrl = 'https://www.demourl.com/account/login/' rp({ url: getLoginUrl, jar: this.cookieJar, method: 'GET' }) .then((body) => { var csrftoken = this.cookieJar.getCookies(getLoginUrl)[1].toString().split('=')[1].split(';')[0]; var args = { url: postLoginUrl, json: true, method: 'POST', data: { username: this.username, password: this.password }, headers: { 'method': 'POST', 'path': '/account/login/', […]

将整个用户放在一个会话中是否安全,而仅仅是node / express的用户ID?

我正在使用节点/快递,并想知道是否可以安全地把整个用户对象在会议而不是只是Id 。 如果我只是做了这个Id那么这意味着当我去获取当前的用户时,我必须再打一个数据库调用。 我看到有人这样做,但如果把Id放在一个更安全的地方,那么我会去做这件事。 我应该声明,我将把用户的密码附加到会话或任何其他敏感数据之前。

冻结connect-redis会话销毁?

我在node.js中实现了一个身份validation系统,这个身份validation系统由一个redis数据库为用户提供支持,而connect-redis为持久的,可伸缩的会话存储提供支持。 这是我的应用程序,服务器的核心: // Module Dependencies var express = require('express'); var redis = require('redis'); var client = redis.createClient(); var RedisStore = require('connect-redis')(express); var crypto = require('crypto'); var app = module.exports = express.createServer(); // Configuration app.configure(function(){ app.set('views', __dirname + '/views'); app.set('view engine', 'jade'); app.use(express.bodyParser()); app.use(express.methodOverride()); app.use(express.cookieParser()); app.use(express.session({ secret: 'obqc487yusyfcbjgahkwfet73asdlkfyuga9r3a4', store: new RedisStore })); app.use(require('stylus').middleware({ src: __dirname + […]

cookie-Sessions和connect-cookie-session之间的明显区别

我正在实现一个会话数据存储在cookie中的系统。 这个系统不需要存储器或redis支持,这使得它很有吸引力。 不过,我很困惑要添加哪个中间件。 我应该添加与connect或第三方connect-cookie-session绑定的默认cookieSession() 。 哦,我正在运行最新的节点版本(0.8.16)和快速版本(3.0.0)

Nodejs,保持套接字io连接在MongoStore中保持活动

在nodejs-express应用程序中,在server.js文件中,我设置了socket-io连接。 它可以很好的做这样的事情 var server = require('http').createServer(app) var io = require('socket.io').listen(server); io.sockets.on('connection', function (socket) { // how can I save globally this 'socket'? }); 我想将这个'socket'全局保存在server.js文件中,这样就可以在项目中的任何地方使用它。 喜欢这个: app.get('/on', function(req, res){ socket.on('test', function (data) { console.log(data); }); }); app.get('/emit', function(req, res){ socket.emit('test', "ciao"); }); 我红色有一种方法来保存会话中的“套接字”连接。 我的会话设置: app.configure(function(){ // …. app.use(express.cookieParser(SITE_SECRET)); app.use(express.session({ secret : ,store : new MongoStore({ mongoose_connection […]

Express.js req.session在路由中是未定义的

我从头开始创buildExpress应用程序,并添加cookieParser,session和csrf中间件 /** * Module dependencies. */ var express = require('express'); var routes = require('./routes'); var user = require('./routes/user'); var http = require('http'); var path = require('path'); var app = express(); // all environments app.use(express.cookieParser()); app.use(express.session({secret: "lalala" })); app.use(express.csrf()); app.set('port', process.env.PORT || 3000); app.set('views', path.join(__dirname, 'views')); app.set('view engine', 'jade'); app.use(express.favicon()); app.use(express.logger('dev')); app.use(express.json()); app.use(express.urlencoded()); app.use(express.methodOverride()); app.use(app.router); app.use(express.static(path.join(__dirname, […]

将会话保存在节点中的运行或数据库中

经过几天骚扰的人在stackoverflow我已经成功创build会议和pipe理他们。 但我想知道在哪里build议存储他们? 在数据库(我使用mongoDb),或在应用程序的运行内存(我把它们存储在一个变种)?

NodeJS会话authentication

我正在尝试设置login会话,以便所有应该被login限制的页面都只是redirect到login屏幕。 不幸的是, app.get似乎很奇怪,而且在某些情况下不会触发。 例如,我的身份validationfunction: function authenticate(req,res) { var pass = false; if (req.session.loggedIn) pass = true; console.log(pass); if (pass) { next(); } else { res.redirect("/html/login.html"); } } 和我的server.js: app.use(express.static(__dirname)); app.use(express.json()); app.use(express.urlencoded()); app.use(express.cookieParser()); app.use(express.session({secret: 'secretkey'})); //not my real key //gets app.get("/onePlayer",authenticate); app.get("/",authenticate); app.get("/logout",function(req,res) { req.session.destroy(); res.redirect("/"); }); /获得身份validation,我可以看到它在我的terminal,但/onePlayer根本不触发,我可以不login进入该页面。 注意: /onePlayer是一个目录。 主页是onePlayer/index.html (尝试完整path,也没有触发器)。 我也确定通过注销和销毁会话来销毁会话。 为什么函数没有被调用/onePlayer ? 我无法弄清楚。

Express JS会话存储实现:TypeError:Object 没有方法'on'

我正在尝试在Node Express中添加自己的会话存储实现: var cma = parseInt(process.env["COOKIE_MAX_AGE"]); console.log("CMA: " + cma); self.app.use(express.bodyParser()); self.app.use(express.cookieParser()); var sessionStore = new SessionStore(); self.app.use(express.session({ secret: '123456…', store: sessionStore, cookie: { maxAge: cma, secure: true } })); 但是我收到以下错误消息: store.on('disconnect', function(){ storeReady = false; }); ^ TypeError: Object [object Object] has no method 'on' 我的SessionStore在文档中实现所需的方法。 这是否意味着我应该在我的SessionStore实现一个on方法?

Sails.jsauthentication用户的单个实例

我想只允许login一个用户的一个实例。如果我在这台计算机上login,然后去另一台计算机login,应该销毁以前的会话。 我怎样才能做到这一点? 我如何访问所有的会话,所以我可以销毁正确的,或确保会话的用户ID是唯一的? 我所见过的访问会话的唯一文档是关于req.session ,它只针对当前会话。