Tag: 会话

快递会话和Cookie会话有什么不同?

我是Express新手。 由于Express 4.x已经删除了捆绑的中间件。 任何我想使用的中间件应该是必需的。 当我通过github上的express-session和cookie-session阅读README时,我感觉很难理解它们之间的区别。 所以我试图写简单的代码来弄清楚。 我为每个中间件运行两次。 var express = require('express') , cookieParser = require('cookie-parser') , session = require('cookie-session') , express_sess = require('express-session') , app = express(); app.use(cookieParser()) app.use(session({ keys: ['abc'], name: 'user' })); //app.use(express_sess({ secret: 'abc', key: 'user'})); app.get('/', function (req, res, next) { res.end(JSON.stringify(req.cookies)); console.log(req.session) console.log(req.cookies) }); app.listen(3000); 对于cookie-session ,我总是在我的terminal中{}。 对于express-session ,我得到这样的事情。 req.session: […]

ExpressJS 3.0如何将res.locals传递给玉视图?

我想在用户login失败后显示一个Flash消息,但是我不能让variables显示在我的Jade视图中。 我有一些片断,我知道我必须在我的app.configure()中使用它: app.use (req, res, next) -> res.locals.session = req.session 在用户input错误的密码后,我将设置闪存信息: exports.postSession = (req, res) -> users = require '../DB/users' users.authenticate(req.body.login, req.body.password, (user) -> if(user) req.session.user = user res.redirect(req.body.redirect || '/') else req.session.flash = 'Authentication Failure!' res.render('sessions/new', {title:'New', redirect: req.body.redirect }) ) 我不知道如何访问我的Jade文件中的res.locals.session 。 我怀疑我正在设置一切正确的。 这个问题很像这个:将Express.js 2迁移到3,特别是app.dynamicHelpers()到app.locals.use? 但我仍然无法工作。 如果有人能给我看一个在res.local中设置值并在视图中访问它们的简单例子,我们将非常感激。 PS我知道连接闪光灯,但我需要了解如何在视图中提供的东西。 这是我的应用程序: app.configure(() -> app.set('views', __dirname […]

res.json发送后无法设置标题

我正在学习节点Js,我正在尝试做一个简单的订阅/日志应用程序。 我有问题与res.json不按预期工作。 当我尝试订阅时出现此错误: 发送后无法设置标题 这是我的服务器端脚本: var express = require('express'); var swig = require('swig'); var ent = require('ent'); var bodyParser = require('body-parser'); var mongoose = require('mongoose'); var session = require('express-session'); var app = express(); // Environnement app.set('port', process.env.PORT || 3000); app.use(bodyParser.json()); app.use(bodyParser.urlencoded({ extended: true })); app.use("/public", express.static(__dirname + "/public")); app.engine('html', swig.renderFile); app.set('view engine', 'html'); app.set('views', __dirname […]

如何在NodeJS中维护一个请求会话

我正在尝试使用NodeJS来抓取需要通过POST进行login的网站。 然后,一旦我login,我可以通过GET访问一个单独的网页。 现在的第一个问题是login。我试图使用request来POSTlogin信息,但我得到的响应似乎没有login。 exports.getstats = function (req, res) { request.post({url : requesturl, form: lform}, function(err, response, body) { res.writeHeader(200, {"Content-Type": "text/html"}); res.write(body); res.end(); }); }; 在这里,我只是转发我回来的页面,但我回来的页面仍然显示login表单,如果我尝试访问另一个页面,它说我没有login。 我想我需要维护客户端会话和cookie数据,但我找不到任何资源来帮助我理解如何做到这一点。 作为一个后续,我结束了使用zombiejs来获得我需要的function

会话密钥在Express web框架中的重要性

会议秘密的重要性使我很困惑。 我正在使用Express和Node进入Web开发,现在我试图实现一个简单的login。 以下代码取自Express中的会话示例。 // Required by session() middleware // pass the secret for signed cookies // (required by session()) app.use(express.cookieParser('keyboard cat')); // Populates req.session app.use(express.session()); 它使用“键盘猫”作为会话密钥。 我查看过的关于会话秘密的许多事情都build议我将其改为自定义。 我现在有3个具体的问题。 为什么我在使用PHP之前没有看到这个? 什么是会议秘密正在使用? 比方说,我改变会话密钥。 我的代码是开源的。 在这种情况下不会改变这个有点多余? 我没有看到要求用户作为一个选项的自定义键。 我正在考虑生成一个随机的UUID来填写密钥。 这有问题吗? (在安全方面)

ExpressJS会话尽pipe活动即将到期

把这个问题带到SO,因为快递小组没有答案 。 我设置会话maxAge = 900000,我看到会话cookie的expires属性设置正确。 但是,在随后的请求中,超时不会被延长。 它永远不会延长,cookie最终会过期。 会话中间件文档说Session#touch()不是必须的,因为会话中间件会为我做。 我实际上尝试手动调用req.session.touch() ,并没有做任何事情,我也尝试在req.session.cookie上设置req.session.cookie ,并且没有做任何事情:-( 我是否错过了某个地方的设置来自动扩展活动会话? 除了在每个请求上手动重新创buildCookie之外,还有其他方法可以在最终用户活动之后延长会话超时吗? 编辑:我在快递v3中遇到这个问题。 我不是100%肯定的,但我认为这个来自明确变更日志的logging可能是罪魁祸首: 更改会话()只修改set-cookie(哈希会话json)

如何在express,couchDB和node.js中使用会话

所以我基本上想使用会话来存储用户名,并检查用户是否login。 如果没有,页面将redirect到login页面。 我正在使用Node.js,express和couchDB。 以下是我如何设置我的会议到目前为止 var MemoryStore = require('connect').session.MemoryStore; app.use(express.cookieParser()); app.use(express.session({ secret: "keyboard cat", store: new MemoryStore({ reapInterval: 60000 * 10 }) })); 要存储会话中的某些东西,我使用下面的代码吧? req.session = {user:name); 所以会话variables似乎在我的login页面上工作。 我成功地将用户名存储到会话中但是,当我尝试访问另一个页面上的会话variables时,它给了我错误 Cannot read property 'user' of undefined 我所做的是: if (req.session.user){ 为什么这个错误发生? 是不是全球应用程序的全球会议? 还是我在这里完全错过了一些东西。 提前致谢!

适用于Express + MongoDB的最佳会话存储中间件

我正在寻找最好的中间件来存储MongoDB中的会话数据,以便在使用express的生产应用程序中使用? 我一直在环顾四周,发现这一点: session-mongoose ( https://github.com/donpark/session-mongoose )根据作者的评论,这不是生产就绪的原因如下: testing不足 零优化 有更好的select比MongoDB会话存储 connect-mongo ( https://github.com/kcbanner/connect-mongo ) express-session-mongo ( https://github.com/davglass/express-session-mongo ) 基于这些类 Sencha连接内存存储 ciaranj的快速会议mongodb connect-session-mongo ( https://github.com/bartt/connect-session-mongo ) 我一直在看他们的代码,我试图find一个性能comparisson文章。 你们有经验来推荐哪一个最好?

PassportJS反序列化用户从未调用过

我有Passport安装程序来validation存储在mongodb中的用户。 似乎工作正常:身份validation成功/失败适当和会话variables设置。 但是,获得护照检查会话失败。 一些东西似乎是相当错误的,我添加到deserializeUsercallback的console.log语句永远不会看到白天的光芒。 我认为我的问题是关系到deserializeUser永远不会被调用。 任何人都可以诊断我的失误? // Passport configuration passport.serializeUser(function(user, cb){ cb(null, user.id) }); passport.deserializeUser(function(uid, cb){ console.log("Trying to deserialize user: "+uid); User.findById(uid, function(err, user){ cb(err, user); }); }); // auth strategy function passport.use(new LocalStrategy({usernameField: 'email'}, function(email, pass, done){ User.findOne({email: email}, function (err, user) { if (err) return done(err); if (!user) return done(null, false, {message: "Couldn't […]

如何在不同的casperjs进程之间保持cookie

这是一个关于如何将cookies从一个casperjs页面保存到另一个页面的问题。 所以基本上我有一个nodejs文件,产生casperjs作为一个工人来做某些任务..一个是login,一旦login,我将cookie存储在一个文件中。 当我产卵下一个casper工人..我希望它使用cookie,而不必再次login..这两个方法失败 : 第一:当我产卵的工人capserjs我添加–cookies文件=。/ cookiefilename即var child = spawn('casperjs',['scrape.js','–cookies-file=./'+cookieFileName]); 第二:在casperjs工作人员文件..我让它读取和设置从一个文件的cookie即 var casper = require('casper').create(); var cookieFileName = 'monsterCookie.txt'; // grab cookies from file var fs = require('fs'); var utils = require('utils'); var cookies = fs.read(cookieFileName); casper.page.setCookies(cookies); casper.start('domain/page.html', function() { //FAIL! cookies aren't used here this.debugHTML(); }); casper.run(); 笔记: 前面已经提到 , start从页面中删除cookies? 如果是的话,我该如何防止呢? 我知道会话在相同的phantomjs页面对象(参见https://gist.github.com/abbood/5347252 )中保持不变,在同一个casperjs页面对象中也是如此(请参阅https://gist.github.com/ abbood […]