2014-09-02 196 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 } 

對不起,我不整的問題詳細說明,我不上你的全辦法同意,但看起來你是在正確的道路,獲得你需要的功能。

此外,這個問題是一歲,現在有幾個包的氣氛,處理這種認證=)

相關問題