Login 如何在Meteor中创建自定义用户身份验证?

Login 如何在Meteor中创建自定义用户身份验证?,login,meteor,Login,Meteor,我正在尝试为应用程序创建以下身份验证: 用户输入电话号码并接收带有服务器中生成的代码的SMS(SMS通过外部服务处理)。如果用户输入正确的代码,则他已登录。 这意味着我必须有两个登录阶段:用手机注册用户和用代码登录用户,所以我认为客户端应该是这样的: Meteor.getSmsCode = function(phone, username, callback) { Accounts.callLoginMethod({ methodName: 'getsmscode', met

我正在尝试为应用程序创建以下身份验证: 用户输入电话号码并接收带有服务器中生成的代码的SMS(SMS通过外部服务处理)。如果用户输入正确的代码,则他已登录。 这意味着我必须有两个登录阶段:用手机注册用户和用代码登录用户,所以我认为客户端应该是这样的:

Meteor.getSmsCode = function(phone, username, callback) {
  Accounts.callLoginMethod({
    methodName: 'getsmscode',
    methodArguments: [{
      getsmscode: true,
      phone: phone,
      username: username
    }],
    userCallback: callback
  });
};


Meteor.loginWithCode = function(phone, code, callback) {
  Accounts.callLoginMethod({
    methodName: 'login',
    methodArguments: [{
      hascode: true,
      phone: phone,
      code: code
    }],
    userCallback: callback
  });
};
但我对服务器端感到困惑-应该有两种方法: 第一个应该只注册一个用户(并与SMS服务通信),第二个应该让他登录

这是目前的服务器测试代码:

Meteor.users.insert({phone: '123456789', code: '123', username:'ilyo'});

Accounts.registerLoginHandler(function(loginRequest) {
  var user = Meteor.users.findOne({phone: loginRequest.phone});

  if(user.code !== loginRequest.code) {
    return null;
  }

  var stampedToken = Accounts._generateStampedLoginToken();
  var hashStampedToken = Accounts._hashStampedToken(stampedToken);

  Meteor.users.update(userId,
    {$push: {'services.resume.loginTokens': hashStampedToken}}
  );

  return {
    id: user._id,
    token: stampedToken.token
  };
});
这就是我尝试的结果:

  • 为什么我会得到
    500
  • 为什么用户没有
    code
    phone
    字段
  • 对于
    getSmsCode
    ,我应该使用什么方法

Meteor.createUser在

然后,Accounts.onCreateUser将包含业务逻辑


关于500的更准确消息将出现在服务器端标准输出上。可能是安全性。

您的登录处理程序必须返回一个对象,如下所示:

{ userId: user._id }
对不起,我没有详细说明整个问题,我不同意你的全部方法,但看起来你在正确的道路上获得了你需要的功能

另外,这个问题已经提出一年了,现在atmosphere中有几个包解决了这种身份验证=)