passport-local-mongoose
ユーザーデータをMongoDBに保存するために使用しています。ユーザーがパスワードを忘れた場合、メールで送信するためにパスワードを取得する必要があります。塩田に貯蔵します。どうすれば塩抜きできますか?
PSbcrypt
ノード > 0.10.x では動作しないため、使用できません
passport-local-mongoose
ユーザーデータをMongoDBに保存するために使用しています。ユーザーがパスワードを忘れた場合、メールで送信するためにパスワードを取得する必要があります。塩田に貯蔵します。どうすれば塩抜きできますか?
PSbcrypt
ノード > 0.10.x では動作しないため、使用できません
パスワードを元のテキストに変換する形式は安全ではないだけでなく、ソルト化されたハッシュを保存することの全体的なポイントは、そもそもそれを困難/不可能にすることです.
代わりに、ユーザーにパスワードリセットリンクを送信/メールして、新しいパスワードを自分で再作成できるようにする必要があります。
基本的に、ユーザーにメールで送信する一意のトークンを作成する必要があります。また、後で検証するために、そのトークンをユーザー オブジェクトに保存します。このようなもの(疑似コード):
app.post('/reset-password', function(req, res){
var email = req.body.email; // you had the user enter their email
User.findByEmail(email, function(err, user){
user.token = new Token(); // some library to create a token
mail(user.email, 'Please visit http://example.com/reset-password/' + user.token);
});
});
したがって、ユーザーが電子メールを受け取ってhttp://example.com/reset-password/xxxxxxxxにアクセスすると、そのトークンでユーザーを確認し、新しいパスワードを作成することができます。
app.post('/reset-password/:token', function(req, res){
var token = req.params.token;
var password = req.body.password; // you had the user enter a new password
User.findByToken(token, function(err, user){
user.hash = new HashFromPassword(password); // some function to create hash from password;
});
});
これで、ユーザーが自分のパスワードを正常にリセットできるようになりました。
実装の詳細については、次の記事をご覧ください: Node.js でパスワード リセットを実装する方法