Tag: 表示

与express()一起使用中间件。与express.static一起使用

我使用PassportJS来保护WebApp(用AngularJS编写)。 我使用Express(4.0.0)的NodeJS在login屏幕后提供静态内容。 我不知道如何同时使用中间件和express.static() 。 我的(不工作)代码看起来像 app.use('/secure', function (req, res, next) { if (req.isAuthenticated()) return next(); res.redirect('/'); }, express.static(__dirname + '/../../client')); 中间件确保的计划是,只有当用户login时,用户才会被发送到WebApp。否则,他/她将被redirect到根文件夹。 我find了这个答案 ,但根据文档 ,新版本支持多种function。 这不是我正在寻找的“干净”的解决scheme,因为目录包含太多的子文件夹和文件。 提前致谢

Stormpath Express Passport保存customData或甚至默认数据

我正在运行Stormpath Express Passport的示例应用程序https://github.com/stormpath/stormpath-passport-express-sample 我无法围绕如何发布表单并保存customData或者甚至默认的数据,如给定的名字和姓氏。 总的来说,我会appeciate,如果我可以得到一个HTML(翡翠或EJS)的例子,我需要在app.js或index.js写的行。 4个晚上我一直在努力。 我已经尝试了多个Express,Stormpath的教程,但是没有一个是用来处理这个示例应用程序的。 我总是不得不安装多个新模块,但即使这样也没有任何工作。 我非常感谢Stormpath的人或者任何有经验的人能够帮助我解决我的问题,也许还会在网站上更新他们的教程,因为有些人似乎已经过时了。

在router.use中定义参数时如何获取参数?

这是Express 4.x. 让我们来看看他们的架构如下: server.js var express = require('express'); var mainRouter = express.Router(); var subRouter = express.Router(); subRouter.route('/').get(function(req, res, next) { console.log(req.params); }); mainRouter.use('/:username', subRouter); app.use('/', mainRouter); 然后我打电话GET /Amberlamps 。 我期望req.params是{ username: 'Amberlamps' } ,但是我得到的是{} 。 但是,如果我在subRouter我的路由subRouter为: subRouter.route('/:city').get(function(req, res, next) { console.log(req.params); }); 请致电GET /Amberlamps/Berlin , req.params是{ city: 'Berlin' } 。 我如何得到:username ? 编辑:根据要求,我想解释一下,为什么我想使用路由器作为subRouter路由器。 假设我想要构build一个具有以下架构的RESTful api服务器: […]

Node.js API – 允许用户只更新和删除自己的对象

我正在尝试使用Node.js w / Express构build一个RESTful API。 我对MEAN堆栈相当陌生,并且想要使用最佳实践。 我很难理解和实现的概念如下: 限制用户对象上的PUT和DELETE等路由,仅允许拥有此对象的用户的请求。 我想到的一种可能性: 为与数据库中的令牌匹配的用户创build秘密令牌 所以当创build一个用户的时候,我给他们分配一个令牌,把它存储在数据库中,并把它附加到他们的会话数据上 然后我的中间件看起来像这样: router.put('/api/users/:user_id', function(req, res, next) { // already unclear how this token should be transfered var token = req.headers['x-access-token'] || req.session.token; // update user (PUT /api/users/:user_id) User.findById(req.params.user_id, function(err, user) { if (err) { res.send(err); } else if (user.token != token) { res.json({ sucess: false, […]

自定义callbackpassportjs?

我有一个订购表单,用户需要先注册才能订购,所以我可以创build一个账户,然后像这样处理订单。 router.post('/project/new', passport.authenticate('local-signup'), function(req, res) { gateway.customer.find(req.user.id, function(err, customer) { if(customer) { // method for a customer inside the vault } else { // add a non existing customer to vault } }); }); 问题是如果某人已经login并且想要下订单。 我需要检查他们是否login,如果他们然后我可以继续订单,如果他们不是那么我需要authentication,然后login。 所以这样的事情对我来说是有意义的。 //prefer this!! router.post('/project/new', function(req, res) { if(req.user) { // do stuff for existing logged in user } else […]

查询winston日志返回空结果

我有一个非常基本的快递应用程序。 我没有任何configuration添加winston 。 我创build这样的日志消息: require('winston').info('App started'); 所有的日志消息进入app.out.log 。 当我进入我看到的文件 info: App started 所以使用Winston的默认日志似乎工作正常。 现在我想使用Winston的查询api: require('winston').query({}, function(err, results) { if (err) { res.status(400).json(err); } else { res.json(results); } }); 但结果是空的。 该文件说: Winston支持使用类似Loggly的选项来查询日志。 请参阅Loggly Search API。 具体来说:File,Couchdb,Redis,Loggly,Nssocket和Http。 因为默认的传输是文件我希望结果不是空的。 任何想法什么是错的?

为什么functionstream程不正常?

我正在一个nodeJS应用程序工作,我不能像正在定义的正常stream程中调用函数。 console.log('1') require('../models/userModel')(UserCtrl);// inside this file i have console.log('2') console.log('3') 对接我得到1 3 2,而不是1 2 3这是我的userModel代码 var Waterline = require('waterline'), config = require('../config/db'), _ = require('lodash') orm = new Waterline() module.exports = function(refContObj){ var User = Waterline.Collection.extend({ identity: 'user', connection: 'myLocalDBConn', attributes: { first_name: 'string', last_name: 'string' } }); orm.loadCollection(User); orm.initialize(config,function(err, models){ refContObj.models = models.collections; console.log('2') […]

TypeError:对象#<ServerResponse>没有方法“发送”

我一直在快速应用程序工作,我刚刚开始得到一个超级奇怪的错误,说TypeError: Object #<ServerResponse> has no method 'send' 。 它开始时,我试图通过由Express提供的路由器为我的应用程序设置一些路由。 我做了一些谷歌search,发现其他人得到的TypeError: Object #<ServerResponse> has no method __ (填空)没有使用Express,或者他们做了奇怪的路由器。 于是,我创build了一个名为app-test.js的新应用程序文件,并删除了所有无关的代码,包括路由器。 不过,我仍然得到相同的错误。 现在我正在设法解决这个问题: server.js var app = require("./app-test"); app.set("port", process.env.PORT || 8000); var server = app.listen(app.get("port"), function () { var host = server.address().address; var port = server.address().port; console.log("Example app listening at http://%s:%s", host, port) }); module.exports.app = app; […]

Loopback.iorest连接器 – json发布不工作

我试图用loopback-rest-connector代理一个rest服务。 远程rest服务方法是POST,需要一个参数。 当我用查询string调用环回端点时,一切正常。 当我与身体json对象调用服务时,我得到的错误是所需的variables是未定义的,但参数是在对象ctx.req.body内。 回环没有看到它们。 我试图添加bodyparser中间件,但它也没有工作。 Datasource.js { "db": { "name": "db", "connector": "memory", "file": "db.json" }, "rest": { "name": "rest", "connector": "rest" }, "geoRest": { "connector": "rest", "debug": "true", "operations": [{ "template": { "method": "POST", "url": "https://url/endpoint", "headers": { "accept": "application/json", "content-type": "application/json", "Authorization": "sdfsdf" }, "body": { "address": "{^address:string}", "country": "{country:string}" } }, […]

Node.js和AWS CodeDeploy

我已经使用Express和Node.js写了一个快速的应用程序。 我可以在本地运行它,它的工作原理。 我如何获得它在CodeDeploy上部署和运行服务器? 我需要添加一些东西到appsec?