15

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

我看到如何通过调用来创建它们的客户端

[Client] Meteor.createUser(options, extra, callback)

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

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

谢谢斯蒂夫

4

7 回答 7

22

在流星使用的较新版本上

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

    });

注意:密码哈希是自动生成的

在旧版本的流星上使用:

1 - 注意:您是否安装了所需的软件包

  • mrt 添加账户-base
  • mrt 添加账户-密码

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

2 - 做 Meteor.users.insert()

例如

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

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

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

      Accounts.setPassword(newUserId, 'newPassword');
      

于 2014-03-26T01:05:42.200 回答
8

目前,这已在meteor-core google group 中提出。

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

有用。我在启动/引导带期间对其进行了测试。

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

所以,不要依赖这个作为一个长期的答案。

斯蒂夫

于 2012-07-25T10:59:53.333 回答
8

现在可能这是一个众所周知的事实,但为了完成这一点 - 有一个新的服务器 API 可以在auth分支上执行此操作。从关于 auth 的文档

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

options 一个哈希值,包含:email(强制)、username(可选) extra:用户对象的额外字段(例如名称等)。"

请注意,API 可能会发生变化,因为它还没有在 master 分支上。

于 2012-09-25T00:24:12.077 回答
2

目前,我相信你不能。跑步

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

接近了,但是createUserinpasswords_server.js调用this.setUserId成功时的实现,并且setUserId不能在服务器上调用,除非我们在客户端启动的方法调用中(在livedata_server.js.

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

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

在服务器引导代码中。

于 2012-07-24T18:26:54.663 回答
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是完全任意的。

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

于 2014-05-06T03:20:34.200 回答
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)
      }
    });
于 2016-10-28T12:33:20.380 回答
0

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

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

options在将profiles.name添加到异常消失之前,我为这个API在工作代码中获取“用户已存在”异常而苦苦挣扎了一段时间。

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

于 2015-05-21T14:44:22.290 回答