在meteor JS

时间:2016-12-14 15:52:35

标签: javascript meteor

在我的Meteor应用程序中,我想更改另一个用户的密码。我想知道在更改之前是否有任何方法可以获取旧密码。

这是我的服务器端方法:

 updateuser(id,password, options) {
    try {
        Meteor.users.update({ _id: id }, { $set: options })
        Accounts.setPassword(id, password, options)
    }
    catch (e) {
        return false;
        throw new Meteor.Error(500, 'updateUser error', e);
    }
}

我想知道旧密码是否正确。

1 个答案:

答案 0 :(得分:2)

您不能获取旧密码,因为它是经过哈希处理的,但是如果您使用明文,则可以检查它是否正确。

您可以使用Accounts._checkPassword(user, password)方法检查旧密码是否正确。它已实施here

user应该是用户对象,password应该是纯文本密码字符串。

如果结果(对象)不包含error属性,则密码正确。

您还可以使用implementation处理Accounts.changePassword(oldPassword, newPassword, [callback])来电的方法来查看(获取灵感),这会更改当前用户的密码。

如果您不想将纯文本密码发送到服务器(通常最好不要发送纯文本版本),可以使用SHA256在客户端上对其进行哈希处理,方法是将其传递给{ {1}}(在Accounts._hashPassword(plainTextPassword)包中实施here。)

accounts-password

使用此函数的结果调用您的服务器方法。假设您的方法中的SHA256哈希密码为// on the client >>> Accounts._hashPassword("foobar"); { "digest":"c3ab8ff13720e8ad9047dd39466b3c8974e592c2fa383d4a3960714caef0c4f2", "algorithm":"sha-256" }

oldPassword