我正在将一个用 0.10.5 编写的旧 sails.js 项目迁移到 0.12.x。 由于原始代码是很久以前编写的,可能有一些“不合格”的代码,我决定通过启动一个新的 sails 项目并缓慢迁移模型/ Controller /服务,同时仅保留必要的策略和配置来重新构建该项目文件。
到目前为止,我成功地完成了该项目,现在我开始处理身份验证问题。理想情况下,我打算转而使用 Passport 和 jwt 来取代现有的express-jwt。
我的旧 config/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
}
}
}
如果我理解正确(我不太熟悉堆栈),此代码将覆盖默认的正文解析器(使用允许大文件的船长 - 这是在 bodyParser
中指定的),此外,还会更改使用的中间件:
包含一个中间件以添加
Access-Control-Allow-Origin
。对于“api”下的路由,它会调用express-jwt中间件,该中间件在此实现中(不确定这是默认行为)查找 token ,然后将用户添加到请求对象(然后在大多数 Controller )。
将正文解析器 (
body-parser
)json
和urlencode
添加到中间件链。
我的问题是我应该保持它或多或少相同还是应该改变它?是否存在任何明显的反模式或安全风险?如果我使用skiper,我需要body parser json/urlencode中间件吗?
我是否能够使用更标准的护照/jwt 代码实现类似的流程?如果是这样,我可以使用 sails-auth
实现这种堆栈还是我应该自己发挥作用?
最佳答案
是的,您可以删除自定义中间件。最新的模式更容易管理。对于初学者来说,
Access-Control-Allow-Origin
可以设置为config/cors.js
您可以使用
passport-jwt
通过利用sails-auth
以更 sails 的方式模块。并将逻辑分为services
,使用policies
管理流量等。sails-auth
的问题也就是说,npm 中的模块已经发布一年多了。它有几个错误。 GitHub 存储库有稳定版本。
我在 sails 中制作了一个最低限度的身份验证服务器,您可以将其扩展用于各种护照策略。服务器支持local
, bearer
, JWT
开箱即用的策略。
关于javascript - 迁移到 Sails.js 0.12 - 中间件迁移,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42229717/