sails将如何为我自动生成REST API,真是太棒了。但是,如何在REST路由中添加额外的处理?例如,我可能有POST /users
路由来创建新用户,并且它接受password
作为用户模型的属性之一。但是,我不想按原样存储密码;相反,我想要哈希密码和盐,以提高安全性。有没有办法在REST API处理请求之前编写代码,以便我可以转换输入或者在需要时进行某种处理?
答案 0 :(得分:4)
您可以在用户模型下实施beforeValidate
或beforeCreate
方法
查看此处的文档http://www.sailsjs.org/#!/documentation/concepts/ORM/Lifecyclecallbacks.html
我将此用作哈希密码:
/**
* User.js
*
* @description :: TODO: You might write a short summary of how this model works and what it represents here.
* @docs :: http://sailsjs.org/#!documentation/models
*/
module.exports = {
attributes : {
name : 'string',
password : {
type : 'string',
required : true,
minLength : 6
},
email : {
type : 'email',
unique : true,
required : true
},
toJSON : function ()
{
var obj = this.toObject();
delete obj.password;
return obj;
}
},
beforeCreate : function (attrs, next)
{
var bcrypt = require('bcrypt');
bcrypt.genSalt(10, function (err, salt)
{
if (err)
{
return next(err);
}
bcrypt.hash(attrs.password, salt, function (err, hash)
{
if (err)
{
return next(err);
}
attrs.password = hash;
next();
});
});
}
};