如何在Meteor中创建用户服务器端?

时间:2012-07-24 11:20:33

标签: meteor

在新的Meteor auth分支中,如何创建用户服务器端?

我看到如何通过调用

创建客户端
[Client] Meteor.createUser(options, extra, callback)

但是假设我想在启动时创建一个Meteor用户集合记录?

例如,启动/引导应用程序期间的管理员帐户?

由于 吊杆

7 个答案:

答案 0 :(得分:21)

在较新版本的流星使用

  Accounts.createUser({
                            username: username,
                            email : email,
                            password : password,
                            profile  : {
                                //publicly visible fields like firstname goes here
                            }

    });

注意:自动生成密码哈希

旧版流星使用:

1 - 注意:您是否已经安装了

  • mrt add accounts-base
  • mrt add accounts-password

在某些版本的流星上你不能像Steeve建议的那样调用SRP密码盐生成器,所以试试这个:

2 - 做Meteor.users.insert()

e.g。

 var newUserId = 
 Meteor.users.insert({
         emails: ['peter@jones.com'],
         profile  : { fullname : 'peter' }
 });

注意:用户必须拥有EITHER用户名或电子邮件地址。我在这个例子中使用了电子邮件。

3 - 最后设置新创建的帐户的密码。       

      Accounts.setPassword(newUserId, 'newPassword');
      

答案 1 :(得分:8)

目前这已经在流星核心谷歌小组中提出过。

Meteor.users.insert({username: 'foo', emails: ['bar@example.com'], name: 'baz', services:     {password: {srp: Meteor._srp.generateVerifier('password')}}});

有效。我在启动/启动过程中测试了它。

我不认为这是永久或长期的答案,因为我相信auth分支仍然有很大的变化,我想Meteor背后的团队将为它提供某种功能。

所以,不要将此视为长期答案。

吊杆

答案 2 :(得分:8)

现在可能是一个众所周知的事实,但为了完成这个 - 在auth分支上有一个新的服务器API。来自docs on auth

  

“[Server] Meteor.createUser(options,extra) - 创建用户和   向该用户发送包含选择其初始密码的链接的电子邮件   并完成他们的帐户注册

     

选项哈希包含:电子邮件(必填),用户名(可选)   extra:用户对象的额外字段(例如名称等)。 “

请注意,API可能会发生变化,因为它尚未在主分支上。

答案 3 :(得分:2)

目前,我相信你做不到。运行

Meteor.call('createUser', {username: "foo", password: "bar"});

接近,但createUserpasswords_server.js的实施在成功时调用this.setUserId,并且除非我们在客户端,否则无法在服务器上调用setUserId - 启动方法调用(在livedata_server.js中搜索“无法在服务器启动的方法调用上调用setUserId”。

这似乎值得支持。也许记录用户的createUser的最后三行应该由方法的新布尔login选项控制?然后你可以使用

Meteor.call('createUser', {username: "foo", password: "bar", login: false});

在服务器引导程序代码中。

答案 4 :(得分:1)

我已经确认我的server / seeds.js文件中的以下代码适用于最新版本的Meteor(版本0.8.1.1)

if (Meteor.users.find().count() === 0) {
  seedUserId = Accounts.createUser({
    email: 'f@oo.com',
    password: '123456'
  });
}

server的目录(或文件夹)意味着我正在服务器上运行代码。文件名seeds.js完全是任意的。

official documentation现在描述了在客户端上运行时和在服务器上运行时Accounts.createUser()的行为。

答案 5 :(得分:1)

从服务器端创建用户

    // Server method
    Meteor.methods({
      register: function(data) {
       try {
         console.log("Register User");
         console.log(data);
         user = Accounts.createUser({
           username: data.email,
           email: data.email,
           password: data.password,
           profile: {
             name: data.email,
             createdOn: new Date(),
             IsInternal: 0
           }
         });
         return {
           "userId": user
         };
       } catch (e) {
         // IF ALREADY EXSIST THROW EXPECTION 403
         throw e;
       }
     }
    });
    // Client call method
    Meteor.call('register',{email: "vxxxxx@xxxx.com",password: "123456"}, function(error, result){
      if(result){
       console.log(result)
      }
      if(error){
       console.log(result)
      }
    });

答案 6 :(得分:0)

Meteor版本1.1.0.2(服务器端)的工作coffeescript示例:

userId = Accounts.createUser  
    username: 'user'
    email: 'user@company.com'
    password: 'password'
    profile:
      name: 'user name' 
user = Meteor.users.findOne userId 

我在这个API上花费了一段时间才得到“用户已经存在'

参考:Accounts.createUser(options,[callback])