私は実際に私のfeathersjsプロジェクトにパスワード変更機能を実装しようとしています. 基本的に私がやろうとしているのは、ユーザーからの入力 (古いパスワードと新しいパスワード) を受け取っていることです。まず、この古いパスワードのハッシュを、データベースに既に保存されているパスワードのハッシュと比較する必要がありますが、ユーザーから提供されたこの古いパスワード フィールドのハッシュを (フェザーで hashPassword() フックを使用して) 生成し、それをデータベースのパスワード ハッシュと比較すると、同じパスワード (プレーン テキストのパスワード)。ここでの問題は、この hashPassword() 関数を使用しているときに、同じ文字列に対して異なるハッシュを取得していることです (内部でソルトを使用しているため)。そのため、パスワード ハッシュを比較できません。で、何か機能とかあるのかな、
> async function checkPassword(context) {
> //already hashed. I also have the plain text of this string
> const oldPassword = context.data.oldPassword;
> // const newPassword = context.data.newPassword;
> //get the current logged-in users password(hash) from
> //database
> const user = await app.service('users').get(context.id);
> console.log('DB: ', user.password);
>
> if (oldPassword === user.password) {
> //allowed to change password
> return true;
>
>
> } else {
> //not allowed to change password
> return false;
> }
>
> }