检查流星中非 sha bcrypts 的密码
Checking password against non sha bcrypts in meteor
我正在将一个应用程序从 parse 迁移到 meteor。在解析中,用户的密码存储为 bcrypt(password),而 meteor 存储为 bcrypt(sha256(password))。如何将旧的 bcrypt 列表插入流星,以便老用户可以无缝登录?
我建议您查看以下内容,了解 accounts-password defines a password login method, then define you own. Method signature 如何实现 registerLoginHandler
。
在服务器中(建议在服务器启动时完成):
import bcrypt from 'bcrypt';
import { Accounts } from 'meteor/accounts-base';
import { Meteor } from 'meteor/meteor';
Accounts.registerLoginHandler('parsePassword', function (options) {
// Validate options
/* TODO Fill in yourself */
// Find the user to login
/* TODO Fill in yourself */
const result = {
userId: user._id,
};
// Prepare the bcrypt method
const bcryptCompare = Meteor.wrapAsync(bcrypt.compare);
if (! bcryptCompare(options.password, hashedPassword)) {
result.error = new Meteor.Error(403, 'Incorrect password');
}
return result;
});
然后你会使用这种登录方法,就像在客户端上一样:
import { Meteor } from 'meteor/meteor';
Meteor.loginWithParsePassword({ user: /* TODO Define the query for finding your user */, password: passwordInput }, function () { console.log(arguments); });
确保在您的 package.json
中列出了 bcrypt 模块
我将示例的一部分留空只是因为我不知道提问者如何从 Parse 导入他们的用户以及导入数据的数据库结构是什么样的。所以我将把这部分代码留作提问者的练习。
我正在将一个应用程序从 parse 迁移到 meteor。在解析中,用户的密码存储为 bcrypt(password),而 meteor 存储为 bcrypt(sha256(password))。如何将旧的 bcrypt 列表插入流星,以便老用户可以无缝登录?
我建议您查看以下内容,了解 accounts-password defines a password login method, then define you own. Method signature 如何实现 registerLoginHandler
。
在服务器中(建议在服务器启动时完成):
import bcrypt from 'bcrypt';
import { Accounts } from 'meteor/accounts-base';
import { Meteor } from 'meteor/meteor';
Accounts.registerLoginHandler('parsePassword', function (options) {
// Validate options
/* TODO Fill in yourself */
// Find the user to login
/* TODO Fill in yourself */
const result = {
userId: user._id,
};
// Prepare the bcrypt method
const bcryptCompare = Meteor.wrapAsync(bcrypt.compare);
if (! bcryptCompare(options.password, hashedPassword)) {
result.error = new Meteor.Error(403, 'Incorrect password');
}
return result;
});
然后你会使用这种登录方法,就像在客户端上一样:
import { Meteor } from 'meteor/meteor';
Meteor.loginWithParsePassword({ user: /* TODO Define the query for finding your user */, password: passwordInput }, function () { console.log(arguments); });
确保在您的 package.json
中列出了 bcrypt 模块我将示例的一部分留空只是因为我不知道提问者如何从 Parse 导入他们的用户以及导入数据的数据库结构是什么样的。所以我将把这部分代码留作提问者的练习。