我目前正在构建我的Sails.js应用程序的身份验证部分,使用bcrypt
来哈希我的密码。一切都运作良好,这是迄今为止的实施样本:
beforeCreate: function (values, next) {
require('bcrypt').hash(values.password, 10, function passwordEncrypted(err, encryptedPassword) {
if (err) return next(err);
values.password = encryptedPassword;
next();
});
}
现在,无论是在model
还是在controller
,我都在使用require('bcrypt')
或var bcrypt = require('bcrypt');
,因此我可以在课堂上使用它。
我正在寻找一种更好的实践方式来定义var bcrypt = require('bcrypt');
一次和全局,以便我可以随时使用bcrypt
变量(在其他模型或控制器内)。
我倾向于相信Sails.js已经有了适合的地方吗?如果没有,您建议最佳实施方式是什么?最后,我正在寻找最佳实践。
提前致谢!
答案 0 :(得分:30)
自Node.js modules are cached once they are loaded for the first time起,重新使用require('bcrypt')
不会对性能产生任何影响。
也就是说,如果您仍然按照自己的方式行事,可以在bcrypt
中要求config/bootstrap.js
并将其添加到sails
命名空间:
module.exports.bootstrap = function (cb) {
sails.bcrypt = require('bcrypt');
//...
cb();
}
之后,您将能够在控制器或模型中使用sails.bcrypt
。
答案 1 :(得分:0)
你也可以通过利用全局
来做到这一点sails.config.globals.bcrypt.hash(password, saltRounds, function (err, hash) {
if (!err) {
sails.config.globals.logger.info('creatHash-hash-->', hash);
return cb(null, hash);
} else {
return cb(err);
}
});
并在应用程序代码中,请参阅下面的
{{1}}