2014-09-02 64 views
3

我正尝试为应用程序创建以下身份验证: 用户输入电话号码并接收带有服务器中生成的代码的SMS(SMS通过外部服务处理)。如果用户输入了正确的密码,他就登录了。 这意味着我必须有两个登录阶段:向用户注册电话并将他登录到代码中,所以这就是我认为客户应该看起来像的样子:如何在Meteor中创建自定义用户认证?

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 
    }); 
}; 

但我困惑的服务器端 - 应该有两种方法: 首先应该只注册一个用户(与短信服务进行通信)和第二应登录他

这是服务器。现在的测试代码:

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 
    }; 
}); 

这是会发生什么,当我尝试: enter image description here

  • 为什么一个我得到500
  • 为什么用户没有codephone字段?
  • 我应该使用什么方法来处理getSmsCode

回答

0

你登录处理程序如下必须返回一个对象:

{ userId: user._id } 

对不起,我不整的问题详细说明,我不上你的全办法同意,但看起来你是在正确的道路,获得你需要的功能。

此外,这个问题是一岁,现在有几个包的气氛,处理这种认证=)

相关问题