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モデルには次の属性がありますが、これらは2つのパスワードの横に保存されています。私はまた、それらが一致する場合、パスワードを暗号化する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.
}
私はフォームが送信されるたびに、データベースに2つの暗号化されていないパスワードを保存するから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がコントローラのデータベースに保存されます。 –
'before' createコールバックを使って' values'オブジェクトからパスワードを削除することができます。 参照:http://sailsjs.com/documentation/concepts/models-and-orm/lifecycle-callbacks – khushalbokadey