Meteor:在没有注销的情况下更改用户密码?

use*_*399 8 javascript meteor

Accounts.setPassword(userId,password);

在Meteor v1.0.2之前,用户在调用此函数时未注销.

从v1.0.2开始,我引用https://github.com/meteor/meteor/blob/devel/History.md,"在密码更改后的所有情况下都会使用户的密码重置和登录令牌失效".

我不知道这种改变的原因,但事实是上面的功能退出用户.

使用v1.0.2,有没有办法在不注销用户的情况下更改用户密码?

如果没有,我如何降级包帐户基础,以便行为像以前一样?

谢谢.

rom*_*oma 20

Accounts.setPassword(userId, password, options)
Run Code Online (Sandbox Code Playgroud)

此方法现在支持 options包含options.logout可用于阻止当前用户注销的选项的参数.


Aks*_*hat 15

您可以使用Accounts.changePassword(docs)来改变密码,这不会影响用户的现有令牌(来自)https://github.com/meteor/meteor/blob/devel/packages/accounts-password/password_server.js# L299-L302

如果您想在不知道现有密码的情况下从服务器执行此操作,则必须分叉accounts-password程序包并删除此行:https://github.com/meteor/meteor/blob/devel/packages/accounts-password/password_server. js#L338并将此包添加到/packages您的应用程序的目录中

如果你想降级你的包(只要你使用meteor的版本支持它):

meteor remove accounts-password
meteor add accounts-password@1.0.3
Run Code Online (Sandbox Code Playgroud)


Ada*_*isa 5

上面的答案是正确的,如果您遇到困难,这里是确切的复制粘贴代码:

Accounts.setPassword(userId, password, {logout: false});
Run Code Online (Sandbox Code Playgroud)

注意:确保您是在服务器端进行此调用。