Tag: sails.js

只允许连接sails.js中授权的套接字

我正在尝试在sails.js后端(使用0.12.x版本)中为socket.io客户端实现某种安全性。 为了达到这个目的,我试图阻止没有正确的cookie(预先没有授权的会话)的客户握手成功,或者使用passport.js来查看客户端是否被authentication。 在Sails.js文档中,我发现这应该是可能的,但我找不到任何提示,如何真正做到这一点。 另一方面,在互联网上寻找例子,人们大多不使用安全套接字,或使用一些旧版本的sails.js(<0.10)。 到目前为止我发现的最接近的是config/sockets.js : beforeConnect: function(handshake, cb) { if (handshake.headers.cookie) { console.log(handshake); // TODO: check session authorization } else { return cb(null, false); } return cb(null, true); }, 这应该检查与握手发送的cookie,如果它有一个适当的会话。 我很难搞清楚,我怎样才能将cookie中的sid映射到sails.js中的当前会话,以决定是否允许连接。 问题: socket.io最好的安全措施是什么,如果只允许less量的客户端(大约40-50个dynamic生成的用户应该被允许进行连接),还有其他人呢? 如何将cookie中的sails.sid映射到活动会话? 其他的configuration可能是我的目标的捷径(例如设置一些策略,socket.io请求使用与http相同的中间件)? 感谢您的任何提示,链接或build议。

使用app.use在sails.js中设置一些路线

首先,上下文。 我正在使用议程安排我的sails.js应用程序中的任务。 议程开始在一个钩子,后奥尔姆和其他钩完成。 到目前为止,一切都很好。 然后我发现了一个日程表 ,一个pipe理议程任务的web界面。 我没有设法使它与sails.js工作。 问题在于下面。 这是应该如何使用日历(从文档): var express = require('express'); var app = express(); // … your other express middleware like body-parser var Agenda = require('agenda'); var Agendash = require('agendash'); var agenda = new Agenda({mongo: 'mongodb://127.0.0.1/agendaDb'}); app.use('/agendash', Agendash(agenda)); 而且我找不到应该把这个放在哪里。 正如我所说,议程是在一个钩子初始化,然后我把它保存为sails.agenda 。 所以我唯一需要做的就是 app.use('/agendash', require('agendash')(sails.agenda)) 但是我不确定如何在routes.js之外添加一个像这样的新路由(我不能在这个文件中引用routes.js ,它是未定义的),然后用一些策略来保护这个路由(我想让agendash可用只有pipe​​理员)。 如果我把它正确的话,这行应该只运行一次,所以我不能把它作为中间件config.http 。 但是否则sails.js的路由器将覆盖路由(至less如果我把sails.hooks.http.app.use('/agendash', require('agendash')(agenda))在一个钩子,路由是没有暴露)。 那么我该怎么做才能使它工作?

如何得到一个'和'与sails-mongodb工作的查询

我有一个在mongo shell中工作的查询 db.getCollection('insights').find({$and:[{author:/jim/i}]}) 返回2条logging。 “或”代码调用waterline / sailsjs-mongo db('insights').find({ or: [ {or: [ {author: new RegExp( ".*"+"jim"+".*", 'i' )} ] } ] }).limit(req.params.limit).skip(req.params.offset).exec(function (err, insights) { … } 按预期返回2条logging。 如果我将“或”更改为“和” db('insights').find({ or: [ {and: [ {author: new RegExp( ".*"+"jim"+".*", 'i' )} ] } ] }).limit(req.params.limit).skip(req.params.offset).exec(function (err, insights) { … } 我得到0个不是预期的logging。 它应该返回2条logging。 我使用本地mongodb JavaScript客户端编写了一些代码。 var MongoClient […]

Sailsjs下载一个数据stream

我有一个帆的应用程序,我使用exceljs来生成一个excel文件。 看他们的文档: https://www.npmjs.com/package/exceljs#writing-xlsx 看起来他们允许写入一个stream。 // write to a stream workbook.xlsx.write(stream) .then(function() { // done }); 当用户期待回应时,我该怎么做? 我读了下面的内容: http://sailsjs.org/documentation/concepts/custom-responses/adding-a-custom-response http://sailsjs.org/documentation/concepts/custom-responses/default-responses 保存文件后,我也尝试res.attachment() ,并没有成功。 有什么我失踪? 编辑 下面的答案几乎是正确的。 我做了以下,它的工作。 以前的解决scheme有时会损坏文件。 res.setHeader('Content-Type', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'); res.setHeader("Content-Disposition", "attachment; filename=" + "Report.xlsx"); return workbook.xlsx.write(res) .then(function() { res.end(); }); 这对我的EC2实例和本地工作。

航行蓝图生命周期

我需要添加一些额外的数据,以find蓝图的结果。 我发现这个解决scheme: module.exports = { find: function(req, res) { return sails.hooks.blueprints.middleware.find(req, res); } } 但是我不能在这里find任何改变回应的方法,或者将callbackjoin到蓝图中。 我甚至试图改变蓝图,并在其中添加cb: module.exports = function findRecords (req, res, cb) { … if (typeof cb === 'function') res.ok(cb(result)); else res.ok(result); 但在这种情况下,它每次返回500个状态码(但是有相应的数据)

Sails JS如何在自动路由POST之后触发动作

我有一个运行Sails的应用程序,并且我使用了很多POST,GET,PUT,DELETE蓝图,而且它们工作的很好。 现在,我想触发一个默认的蓝图触发后的行动。 例如,如果我请求example.com/user并使用POST发送,我希望蓝图路由将信息插入到数据库中,然后执行一些其他操作,我该怎么做? 要使用蓝图(这是伟大的),然后触发一些其他的行动,然后返回。 我知道我可以使用自己的路线,但是我想使用Sails为我自动做的事情,所以我不想为这个post添加一个路由,而是自己做所有的事情,我想用Sails插入,然后做其他的事情。 谢谢!

禁用蓝图路线航行js

你好,我有模型的用户,其中有订单模式的外键。 现在帆会自动生成route /users/:id/orders 。 我必须禁用这条路线。 这个怎么做 ? 我已经尝试使用以下命令禁用所有的命令路由: _config : { actions: false, rest: false, shortcuts: false }但是仍然不能工作

在路线上的风帆上应用多个策略

如何在sails生成的路由中应用多个策略: /users/:id/orders 。 我可以在config / routes.js中应用这样的策略 '/users/:id/orders' : { policy : 'isAuthenticated' } 但是怎样才能以类似的方式应用多个政策

获取所有由sails生成的开放路由列表(Node js MVC框架)

你好,我正在使用帆JS为我的Web应用程序开发。 帆会自动生成一些快捷路线,一些蓝图路线,一些行动路线和一些填充路线。 我find了所有由帆产生的路线。 我怎样才能做到这一点?

将Sails.js应用程序部署到Google App Engine时超时

我正在尝试将新的Sails.js应用程序部署到Google App Engine。 当我简单地部署框架(使用CLI创build的vanilla Sails.js应用程序运行sails new web-service ),它工作得很好。 部署发生得很快,我可以通过访问URL访问应用程序。 我在/config/connections.js上configuration了ORM以连接到mLab MongoDB数据库。 在这个变化之后,应用程序在我的本地机器上正常工作,但是当我使用terminal将其部署到Google App Engine时,出现以下控制台错误: Updating service [default]…failed. ERROR: (gcloud.app.deploy) Error Response: [13] Timed out when starting VMs. (1/2 ready, 1 still deploying). npm ERR! Darwin 15.5.0 npm ERR! argv "/usr/local/bin/node" "/usr/local/bin/npm" "run" "deploy" npm ERR! node v5.11.0 npm ERR! npm v2.14.5 npm ERR! code ELIFECYCLE […]