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: […]

使用static(),staticCache()和compress()node.js连接中间件

我有一个Express 3.0应用程序,我试图使用static() , staticCache()和compress()中间件来服务和压缩我的静态文件。 这是我目前的app.configure()函数: app.configure(function() { app.use(express.favicon(__dirname + '/public/favicon.ico', {maxAge: 86400000})); app.use(express.bodyParser()); app.use(express.cookieParser('foo')); app.set('views', __dirname + '/views'); app.engine('.html', mustache({cache: true}).render); app.use(express.session({ store: sessionStore, secret: 'foo'})); app.use(express.staticCache()); app.use(express.static(__dirname + '/public', {maxAge: 86400000})); app.use(express.compress()); }); // routes are loaded here 有了这个configuration,YSlow报告我的.css和.js文件没有被压缩,并且我无法清除浏览器并多次刷新页面,导致caching命中。 我也尝试在staticCache中间件中放入debugging语句来报告caching命中并运行ab -n 10000 -c 500显示0caching命中。 显然我做错了什么(我猜的顺序或选项搞砸了),但我不明白它是什么。 任何人有这三个中间件一起正常工作的工作示例?

Node.js服务器重新启动会丢弃会话

我正在使用快速和连接中间件function齐全的用户注册/身份validation系统。 app.use(express.session({store: require('connect').session.MemoryStore( {reapInterval: 60000 * 10} ) })) 唯一的问题是,每次执行服务器重新启动时会话都会丢失。 https://github.com/remy/nodemon – 并且nodemon每次检测到文件更改时都会重新启动node.js。 我怎样才能持久会议?

如何使用express.js在Ajax调用中实现CSRF保护(查找完整示例)?

我正在尝试使用express.js框架在使用node.js构build的应用程序中实现CSRF保护。 该应用程序充分利用Ajax post调用服务器。 我明白,连接框架提供了CSRF中间件,但我不知道如何在客户端Ajax post请求的范围内实现它。 关于这个在这里在其他问题发布在stackoverflow,但我还没有find一个相当完整的例子,如何从客户端和服务器端实现它。 有没有人有一个他们喜欢分享如何实施这个工作的例子? 我所见过的大多数例子都假设你在服务器端渲染表单,然后将它(连同embedded的csrf_token表单字段)一起发送到客户端。 在我的应用程序中,所有内容都通过Backbone.js呈现在客户端(包括模板)上。 所有服务器都提供JSON格式的值,这些值在客户端的Backbone.js中被各种模型使用。 根据我的理解,我需要先通过ajax检索csrf_token,然后才能使用它。 但是,我担心这从安全的angular度来看可能是有问题的。 这是一个有效的关注吗?

Node.js / Express.js – 如何重写/拦截res.render函数?

我正在用Connect / Express.js构build一个Node.js应用程序,并且我想拦截res.render(view,option)函数在将代码转发到原始渲染函数之前运行一些代码。 app.get('/someUrl', function(req, res) { res.render = function(view, options, callback) { view = 'testViews/' + view; res.prototype.render(view, options, callback); }; res.render('index', { title: 'Hello world' }); }); 它看起来像一个人为的例子,但它确实适合我正在构build的整体框架。 我对JavaScript和OOP和Prototypalinheritance的知识有点弱。 我将如何做这样的事情? 更新:经过一些实验,我想出了以下内容: app.get('/someUrl', function(req, res) { var response = {}; response.prototype = res; response.render = function(view, opts, fn, parent, sub){ view = 'testViews/' + […]

Connect或Express中间件来修改response.body

我想有一个中间件function,修改响应正文。 这是一个快递服务器。 就像是: function modify(req, res, next){ res.on('send', function(){ res.body = res.body + "modified" }); next(); } express.use(modify); 我不明白要听什么事。 任何帮助或文件将不胜感激。

检查每个node.js请求authentication凭证

我用Express和connect-auth来使用node.js来authentication用户。 这是请求/索引时的validation: if(req.isAuthenticated()) { res.redirect('/dashboard'); } else { res.render('index', { layout: 'nonav' }); } 但是,在注销并返回到fe'/ dashboard'后,我可以看到仪表板。 我怎样才能把validation检查到每一个请求,以确保有一个有效的用户在任何时候? 更新我没有任何authentication问题,一切工作正常! 我需要一个解决scheme,它检查每个路由/请求,如果有一个有效的用户,而不是在路由实现中放置一个函数或if语句,因为整个应用程序无论如何都需要一个有效的用户。 Express-Authentication-Example在路由定义中使用“restrict”,但是路由很多,很容易被遗忘。

Node.js:如何在Express中的所有HTTP请求上做些什么?

所以我想做一些事情: app.On_All_Incomeing_Request(function(req, res){ console.log('request received from a client.'); }); 当前的app.all()需要一个path,如果我举例来说这个/然后只有当我在主页上,所以它不是全部.. 在简单的node.js中,就像在创buildhttp服务器之后,在执行页面路由之前一样简单。 那么如何用express来做到这一点呢,做这件事的最好方法是什么?

在express.js,任何方式来捕获请求到一个函数json和html?

有没有人知道在express.js的方式来捕获请求在一个单一的function为HTML和JSON? 基本上我想为/users和/users.json使用单一路由 – 就像使用rails的路由 – > controller一样。 这样,我可以封装逻辑在一个单一的function,并决定呈现HTML或JSON。 就像是: app.get('/users[.json]', function(req, res, next, json){ if (json) res.send(JSON.stringfy(…)); else res.render(…); //jade template }); 我可以使用一个参数吗?

Node.jsexpression正确使用bodyParser中间件

我是node.js的新手,expression了一段时间的尝试。 现在我对与parsing请求体相关的expression框架的devise感到困惑。 从快递的官方指南: app.use(express.bodyParser()); app.use(express.methodOverride()); app.use(app.router); app.use(logErrors); app.use(clientErrorHandler); app.use(errorHandler); 设置所有中间件之后,我们添加我们要处理的路线: app.post('/test', function(req, res){ //do something with req.body }); 这种方法的问题是,在检查路由有效性之前,所有的请求主体将被首先parsing。 分析无效请求的机构似乎效率很低。 甚至更多,如果我们启用上传处理: app.use(express.bodyParser({uploadDir: '/temp_dir'})); 任何客户端可以通过上传任何文件(通过发送请求到ANY路由/path!!)来轰击服务器,所有这些都将被处理并保存在“/ temp_dir”中。 我不敢相信这个默认方法正在被广泛推广! 我们当然可以在定义路由时使用bodyParser函数: app.post('/test1', bodyParser, routeHandler1); app.post('/test2', bodyParser, routeHandler2); 甚至可能在处理路由的每个函数中parsing主体。 但是,这是很乏味的事情。 有没有更好的方法使用express.bodyParser只有在所有有效的(定义的)路由,并使用file upload处理能力只在选定的路由,没有很多的代码重复?