【发布时间】:2017-02-14 15:15:01
【问题描述】:
我正在将一个用 0.10.5 编写的旧sails.js 项目迁移到 0.12.x。 由于原始代码是很久以前编写的并且可能有一些“不合格”的代码,我决定通过启动一个新的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
}
}
}
如果我理解正确(我不精通堆栈),此代码将覆盖默认的正文解析器(使用允许大文件的跳过器 - 这是在 bodyParser 中指定的),此外,还更改了使用的中间件:
包括一个中间件以添加
Access-Control-Allow-Origin。对于 'api' 下的路由,它会调用 express-jwt 中间件,该中间件在此实现中(不确定它是否是默认行为)查找令牌,然后将用户添加到请求对象(然后用于大多数控制器)。
将正文解析器的 (
body-parser)json和urlencode添加到中间件链中。
我的问题是我应该保持它大致相同还是应该改变它?是否有任何明显的反模式或安全风险?如果我使用skipper,是否需要body parser json/urlencode 中间件?
我能否使用更标准的护照/jwt 代码实现类似的流程?如果是这样,我可以使用sails-auth 实现这种堆栈还是应该自己扮演角色?
【问题讨论】:
标签: javascript node.js sails.js