我正在迁移一个用0.10.5写成0.12.x的旧sails.js项目。 由于原始代码是很久以前写的,可能会有一些不符合要求的"代码我决定通过启动一个新的sails项目并慢慢迁移模型/控制器/服务来重新构建项目,同时只保留必要的策略和配置文件。
到目前为止,我设法让项目解除,现在我开始处理身份验证。理想情况下,我打算使用护照和jwt来取代现有的express-jwt。
我的旧配置/ http.js看起来像这样:
module.exports.http = {
bodyParser: function() {
//return require('body-parser')({limit: '900mb'});
var opts = { limit:'50mb' };
var fn;
// Default to built-in bodyParser:
fn = require('skipper');
return fn(opts);
},
customMiddleware: function(app) {
var bodyParser = require('body-parser');
var expressJwt = require('../libs/express-jwt');
var experssJwtConfig = require('./jwt.js').jwt;
app.use(function(req, res, next) {
res.setHeader("Access-Control-Allow-Origin", "*");
next();
});
app.use('/api', expressJwt({secret: experssJwtConfig.secret}));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded());
if(process.env.NODE_ENV == 'development') {
// just for local/development - serve static files
}
}
}
如果我理解正确(我不熟悉堆栈),这段代码会覆盖默认的主体解析器(使用允许大文件的skipper - 这在bodyParser
中指定),此外,更改使用的中间件:
包含要添加Access-Control-Allow-Origin
的中间件。
对于' api'下的路线它调用express-jwt中间件,在这个实现中(不确定它是默认行为)查找令牌,然后将用户添加到请求对象(然后在大多数控制器中使用)。
将正文解析器(body-parser
)json
和urlencode
添加到中间件链。
我的问题是我是应该保持它或多或少相同,还是应该改变它?是否存在明显的反模式或安全风险?如果我使用队长,我是否需要身体解析器json / urlencode中间件?
我是否可以使用更标准的护照/ jwt代码实现可比流程?如果是这样,我可以用sails-auth
实现这种堆栈,还是应该自己角色?
答案 0 :(得分:1)
是的,您可以删除自定义中间件。最新模式更易于管理。首先,
Access-Control-Allow-Origin
可以在config/cors.js
您可以使用passport-jwt
模块以更加 sailsy 的方式使用sails-auth
。并将逻辑拆分为services
,使用policies
来管理流程等。sails-auth
的问题是,npm中的模块已在一年前发布。它有几个错误。 GitHub回购虽然有稳定的版本。
我在帆中制作了一个最小的auth服务器,您可以扩展其用于各种护照策略。服务器支持开箱即用的local
,bearer
,JWT
策略。