创建用户后如何防止自动登录

L.T*_*L.T 16 javascript meteor meteorite

我在中添加了帐户密码和帐户基础包 Meteor

当我创建这样的用户时:

Accounts.createUser({username: username, password : password}, function(err){
          if (err) {
            // Inform the user that account creation failed
            console.log("Register Fail!") 
            console.log(err)
          } else {
               console.log("Register Success!")
            // Account has been created and the user has logged
          }    
  });
Run Code Online (Sandbox Code Playgroud)

帐户已创建且用户已登录.

例如,我以管理员身份登录,我想为某人创建一个帐户,但我不想在创建帐户后注销.

创建用户后如何防止自动登录?

我找到了accouts-password包的源代码:

48-63行:

// Attempt to log in as a new user.
Accounts.createUser = function (options, callback) {
  options = _.clone(options); // we'll be modifying options

  if (!options.password)
    throw new Error("Must set options.password");
  var verifier = Meteor._srp.generateVerifier(options.password);
  // strip old password, replacing with the verifier object
  delete options.password;
  options.srp = verifier;

  Accounts.callLoginMethod({
    methodName: 'createUser',
    methodArguments: [options],
    userCallback: callback
  });
};
Run Code Online (Sandbox Code Playgroud)

我应该修改源代码来解决这个问题吗?

任何帮助表示赞赏.

sai*_*unt 23

您正在尝试使用客户端帐户管理来执行尚未设计的任务.

客户端帐户包的目的是专门允许新用户创建他们的帐户并期望立即登录.

您必须记住某些功能可以在客户端和/或服务器上以不同的行为运行,Accounts.createUser docs指定:"在客户端上,此功能在成功完成时以新创建的用户身份登录."

相反,"在服务器上,它返回新创建的用户ID." (它不会弄乱客户端上当前登录的用户).

为了解决您的问题,您应该编写一个服务器端方法来创建一个新用户,并且在正确填写您自己设计的用户创建表单后,可以从客户端管理面板调用它.