Tag: 中间件

使用Express合并,缩小和提供JavaScript文件,但不会解压

我正在使用Express来构build一个Web应用程序。 我想要合并,缩小和服务.js文件。 我写了一个中间件,这是我的代码: var fs = require('fs'), path = require('path'), uglify = require('uglify-js'), cache = '', scriptsDir = path.join(__dirname, '../scripts'), files = fs.readdirSync(scriptsDir); // Sync read is not a problem since the following code is executed on startup files.forEach(function(fname) { if (/^.*\.js$/.test(fname)) { cache += fs.readFileSync(path.join(scriptsDir, fname), 'utf8').toString(); } }); cache = uglify.minify(cache, { fromString: […]

更新:NodeJS – connect-keycloak中间件空响应错误

我在使用带有NodeJS的connect-keycloak中间件的时候遇到了一个问题,而且使用它的人似乎只有很less的文档。 这是基于在这里find的官方文档'A Full Example': http : //keycloak.github.io/keycloak-nodejs/connect/ 使用curl进行testing时,出现了一个意外的错误,涉及到未定义的“keycloak-token”。 在我的代码或源代码中找不到任何对此的引用,也没有任何人在网上遇到同样的问题。 任何人都可以看到我做错了什么? connect-keycloak对象包含并按预期方式实例化: // app.js: // module dependencies var request = require('sync-request'); var fs = require('fs'); var restify = require('restify'); var Keycloak = require('connect-keycloak'); var session = require('express-session'); var memoryStore = new session.MemoryStore(); // Keycloak var keycloak = new Keycloak({ store: memoryStore }); 并使用中间件: var server = […]

Express JS路由器中间件抽象

我使用Node.js + Express JS开发了一个API,并使用基于令牌的身份validation。 我在这个API中使用了两个不同的路由器,userRoute(/ USER)和postRoute(/ POST)。 postRoute可以在authentication中使用,但是userRoute需要令牌。 为了解决这个问题,我使用了一个路由器中间件userRoute,但它干扰了PortRoute 这是代码: … var postRoute = express.Router(); var userRoute = express.Router(); // Route middleware to verify a token userRoute.use(function(req, res, next) { security.checkToken(req,res, next); }); userRoute.route('/users') .get(userCtrl.findAllUsers) .post(userCtrl.addUser); postRoute.route('/posts') .get(userCtrl.findAllPosts) .post(userCtrl.addPost); app.use(userRoute); app.use(postRoute); … 如果我尝试访问“/职位”的服务器检查令牌,不让我进来。我知道如果我改变了app.use它的工作顺序,但我不明白为什么这样工作,如果我使用“路由器中间件”。 有人知道吗?

Connect的会话中间件的签名cookie如何工作?

我想要解释一下connect.sid cookie如何在Connect Node.js框架中工作。 我注意到他们是形成的, s:hash.signature 我不明白如何使用签名,当散列能够被用来从内存存储或redis存储访问会话数据。 另外,我不明白为什么s:甚至在cookie中; 这是什么目的。 我听说签名被用来“签名”散列。 究竟是“签名”还是“签名”? 我也需要对这个过程进行解释。 谢谢!

导致Node.JS + Express故障的CSRF中间件

根据以前的SO问题已经成功地获得了以快递方式工作的CSRF中间件。 它正在生成令牌,但拒绝所有表单提交。 唯一可能的冲突我可以看到,我使用redis作为会话存储与connect-redis和插入到会话中的socket.io,但我已经注释掉了插槽位,它仍然不是很好玩。 这是我打电话给我的中间件的命令可能是棘手的吗? (CoffeeScript的) app.configure -> 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: "itsasecret" store: sessionStore app.use express.csrf() app.dynamicHelpers token: (req, res) -> req.session._csrf app.use app.router app.use express.static(__dirname + '/public') 这是响应发布的数据的路线。 (这不是开发代码,只是我学习节点,我很清楚,如果我把它放在网上这将是一个怪物) app.post '/admin/logintry', (req, res) -> if req.body.username is 'Tim' and req.body.password […]

parsing后表单数据Node.js Express

我以这种forms获取表单数据 '——WebKitFormBoundarysw7YYuBGKjAewMhe\r\nContent-Disposition: form-data; name': '"a"\r\n\r\nb\r\n——WebKitFormBoundarysw7YYuBGKjAewMhe–\r\n 我试图find一个中间件,这将允许我访问表单数据,如: req.body.a // -> 'b' 我试过了 var express = require('express'); var app = express(); var bodyParser = require('body-parser'); // parse application/x-www-form-urlencoded app.use(bodyParser.urlencoded({ extended: false })) 我的执行是否有问题,或者我没有使用正确的中间件?

Node.Js / Express – 简单的中间件来输出响应的前几个字符

对于日志logging/debugging,我想在发送给浏览器之前输出响应的前一百个字符。 有什么简单的我可以做中间件和响应对象来做到这一点? 理想情况是这样的: app.use(function(req, res, next) { console.log('Response snippet: '+((res.body || '').substr(0,100))); next(); }); 除了回应没有身体,我不能完全弄清楚现在的身体被送回的位置。 更新: 彼得的答案工作,我想我会把我的中间件代码在这里保存未来的观众点击: App.use(function(req, res, next) { var end = res.end; res.end = function(chunk, encoding){ res.end = end; if (chunk) { console.log(chunk); } res.end(chunk, encoding); }; next(); });

无法在适当的时间在域上调用处理

我在domain模块有问题。 目前,我正在尝试捕获请求中引发的任何未被捕获的错误。 使用express中间件和域。 所有的请求都是通过这个函数路由的,然后再调用nextpath。 app.use (req, res, next) -> domain = createDomain() domain.on "error", (err) -> res.send(500) domain.dispose() domain.enter() next() 问题是,如果从不抛出错误,我该如何处理域名呢? 我可以把中间衣以外的领域和活动吊起来,这样我就不用去处理了,但是我不会再有中间衣物,所以我需要发500个衣服。 有没有人有更好的解决scheme,我如何处理这个? 我花了太多的时间试图找出一个办法(和许多hacky的方式)来处理这个问题。 谢谢。

Expressjs路由器基于Content-Type头

对于路由,我希望我的中间件将请求传递到/ html文件夹中定义的路由到服务器HTML(ejs),如果Content-Type是application / json,则使用/ api文件夹中定义的路由。 但是我不想在每条路线上都定义这一点。 所以我不是在寻找定义一些req.api属性的中间件,我可以在每个路由中检查它 app.get('/', function(req, res) { if(req.api_call) { // serve api } else { // serve html } }); 但是我想要这样的东西: // HTML folder app.get('/', function(req, res) { res.send('hi'); }); // API folder app.get('/', function(req, res) { res.json({message: 'hi'}); }); 这是可能的,如果是这样,我该怎么做? 我希望能够像这样工作: app.use(checkApiCall, apiRouter); app.use(checkHTMLCall, htmlRouter);

我可以用什么来取代嵌套的asynchronouscallback?

比方说,我想发送一封电子邮件,然后更新数据库,这两个行动是asynchronous的。 这是我通常会写的。 send_email(function(err, id){ if(err){ console.log("error"); }else{ update_database(id,function(err, id){ if(err){ console.log("error"); }else{ console.log("success"); } }); } }); 我想用中间件代替它。 var mid = {}; mid.send_email = function(){ return function(next){ send_email(function(err,id){ if(err){ console.log("error"); }else{ next(id); } }); } } mid.update_database = function(){ return function(id,next){ update_database(id,function(err,id){ if(err){ console.log("error"); }else{ next(id); } }); } } mid.success = function(){ return function(id,next){ […]