Meteor.loginWithPassword返回错误:密码不正确[403]

时间:2013-10-26 13:10:30

标签: login meteor

我想以编程方式添加少量用户,并在我的meteor应用程序中使用其中一个用户登录。我找不到任何在服务器端添加用户的方法;所以我在客户端添加了两个按钮来生成用户并使用其中一个登录。我可以创建用户(我在mogodb中看到它们)但我无法登录,收到错误:密码不正确[403]。我错过了什么? 这是client.js代码

Template.hello.events({
 'click #createUsers': function () {
    console.log("Creating users...");
    var users = [
       { email: "dgra@gmail.com", username: "gra", name: "gra", roles: ['admin'] }
    ];
    _.each(users, function (user) {
        Accounts.createUser({
            email: user.email,
            password: "admin",
            profile: { username: user.username },
            profile: { name: user.name },
            roles: user.roles
        });
    });
},

 'click #logIn': function () {
     console.log("logIn gra...");
    Meteor.loginWithPassword("dgra@gmail.com", "admin", function (err) {
        if (err) {
            console.log("loginError: " + err);
        }
    });
 }
});

1 个答案:

答案 0 :(得分:1)

  

我找不到在服务器端添加用户的任何方法

您可以从服务器添加用户。当docs指出时,Accounts.createUser会在任何地方运行。这是一个有效的例子:

服务器/ initialize.js

var insertUser = function() {
  var user = {
    email: 'dgra@gmail.com',
    username: 'gra',
    name: 'gra'
  };

  Accounts.createUser({
    username: user.username,
    email: user.email,
    password: 'admin',
    profile: {
      name: user.name
    }
  });
};

Meteor.startup(function() {
  if (Meteor.users.find().count() === 0) {
    insertUser();
  }
});

几点:

  1. 您只能添加一个配置文件对象。
  2. Accounts.createUser只接受文档中显示的参数,因此您无法添加任意对象。
  3. 如果您尝试使用roles,则示例会显示在创建帐户后添加的角色。
  4. 在上面的代码中,如果数据库中没有用户,我只会添加用户。这样便于测试,因为用户将在meteor reset之后自动插入(无按钮按下)。