我正在尝试创建一个注册页面,跟在irl nathans guide之后。现在一切正常,但sail.js似乎将数据库中的所有内容都保存起来。举个例子,我有这样的形式:sailsjs:避免保存某些表单输入到数据库中
<form class="form-signup" name="signup-form" action="/user/create" method="POST">
<input type="text" name="username" placeholder="<%= __('username') %>"> %>">
<input type="text" name="email" placeholder="<%= __('email') %>">
<input type="password" name="password" placeholder="<%= __('password') %>">
<input type="password" name="confirmation" placeholder="<%= __('confirm-password') %>">
<input class="button" type="submit" value="<%= __('signup') %>"/>
<input type="hidden" name="_csrf" value="<%= _csrf %>"/>
</form>
在这个例子中节省了密码,并在数据库中,该密码确认它不应该。
在我的User.js模型中,我有以下属性,但这些只是保存在两个密码旁边。我也有一个encryptedPassword,如果它们匹配,它会加密密码。
module.exports = {
attributes: {
username: {
type: 'string',
required: true,
unique: true
},
email: {
type: 'string',
required: true,
isEmail: true,
unique: true
},
encryptedPassword: {
type: 'string'
},
// more unimportant code here.
}
我想知道是否它可以防止sails.js无论何时提交表单保存在数据库中的两个未加密的口令。我知道我可以从数据库中删除它,但是,这看起来很愚蠢。
在数据库中保存的记录,提交时:
{
"username": "testuser",
"password": "2",
"confirmation": "2",
"email": "[email protected]",
"createdAt": 1496268539155,
"updatedAt": 1496268539155,
"encryptedPassword": "$2a$10$BkwvQnu3TA4DQ1kDMZmi6O7Z/K5uX90fHi/6zkZF.nkKi8MU.zWTS",
"id": "592f3efbaa4d2563e159dc20"
}
因为我加密密码,它不应该也节省了未加密的密码,只是因为他们是提交表单的一部分。我如何阻止它这样做?
可能会将所有传入的req.param保存到控制器中的数据库中。 –
您可以使用'beforeCreate'回调从'values'对象中删除密码。 请参阅:http://sailsjs.com/documentation/concepts/models-and-orm/lifecycle-callbacks – khushalbokadey