我正嘗試爲應用程序創建以下身份驗證: 用戶輸入電話號碼並接收帶有服務器中生成的代碼的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
};
});
這是會發生什麼,當我嘗試:
- 爲什麼一個我得到
500
? - 爲什麼用戶沒有
code
和phone
字段? - 我應該使用什麼方法來處理
getSmsCode
?