3

Meteor 提供了一组loginWithExternalService()方法(例如loginWithTwitter()),允许用户创建帐户或使用这些第三方身份验证提供程序重新登录。

但是有没有办法区分这两种行为?即让人们使用 Twitter登录,而不必让他们通过相同的操作注册它?

实际用例是针对注册受限的站点,您有一个用于注册的私有 URL ,但有一个用于登录公共页面。我正在寻找一种方法来防止人们仅通过首次登录就能够创建帐户。

4

1 回答 1

1

您可能会挂接到Accounts.onCreateUser(服务器端)

这样的事情可能会有所帮助:

服务器端js

Accounts.onCreateUser(function(options, user) {

  //Check if this user can be created, if not throw an error
  var canCreate = false

  if(!canCreate) 
      throw new Meteor.Error(403, 'You cant sign up', "Sorry you can only sign in but not sign up");

  //Create the user like normal if we can.
  if (options.profile)
    user.profile = options.profile;
  return user;
});

抛出错误会阻止该方法返回和创建帐户。它仅在有人正在创建帐户并且还没有帐户时运行(也有外部服务提供商)

在客户端上,您可以处理错误,但在accounts-ui包上您会收到“内部服务器错误”消息。您可能可以将其自定义为“您需要成为管理员”或其他内容

于 2013-10-27T10:17:19.727 回答