流星帐户注册

时间:2014-12-15 18:09:26

标签: meteor iron-router meteor-accounts meteor-autoform

我正在寻找一种自定义登录的方法,以允许管理员为用户提供帐户和一次性临时密码(通过电子邮件),使用户能够登录网站(用户无法自行创建帐户)。

用户首次登录时,会指示他们更改管理员提供的临时密码。

我的帐户-ui和帐户密码有效,但用户可以随意创建新帐户。

如果重要,我计划使用Autoform和Iron Router。

我搜索Meteor文档以“注册”,但信息是稀疏的IMO。是否有一个完全有效的例子来帮助我开始?

2 个答案:

答案 0 :(得分:2)

要禁用创建帐户的常用方法,请使用Accounts.config:

  

forbidClientAccountCreation布尔

     

将拒绝从客户端调用createUser。此外,如果您使用的是account-ui,则“创建帐户”链接不会   可用。

然后,我认为您应该create the account没有密码,然后use Accounts.sendEnrollmentEmail向用户发送电子邮件以选择一个密码,而不是使用临时密码。

  

要在服务器上创建没有密码的帐户,仍然允许   用户选择自己的密码,用电子邮件调用createUser   选项然后调用Accounts.sendEnrollmentEmail。这将发送   用户一封电子邮件,其中包含设置初始密码的链接。

所以,就像这样:

Accounts.config({forbidClientAccountCreation: true});

Meteor.methods({
  adminCreateAccount: function (accountAttributes) {
    if(Meteor.user() && Meteor.user().role == "admin") {
      var accountId = Accounts.createUser({
        'username': accountAttributes.username,
        'email': accountAttributes.emailAddress
      });
      Accounts.sendEnrollmentEmail(accountId);
    }
  }
});

答案 1 :(得分:0)

你能做的是

  • 让管理员创建用户(Accounts.createUser)
  • 添加一个标记(例如user.profile.changedInitialPwd),该标记将在用户时设置 改变了他的pwd)
  • 使用一些验证逻辑确保用户在允许登录之前更改了密码

E.g。

Accounts.validateLoginAttempt(function(attempt){
  if (attempt.user && !attempt.user.profile.changedInitialPwd ) {
    console.log('Initial password not changed');
    return false; // the login is aborted
  }
  return true;
});
相关问题