2014-09-02 2 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 
    }); 
}; 

하지만 서버 측에 대한 혼란 스러워요 - 두 가지 방법이 있어야한다 :. 만 사용자를 등록 (및 SMS 서비스와 통신) 및 제 2 그를 로그인해야합니다 첫

이것은 서버입니다 현재 테스트 코드 :

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를 가져 오는 I?
  • 사용자에게 codephone 필드가있는 이유는 무엇입니까?
  • getSmsCode에는 어떤 방법을 사용해야합니까?

답변

0

다음과 같이 객체를 반환해야합니다 로그인 처리기 :

{ userId: user._id } 

가 미안 전체 문제에 정교하지 않습니다

, 나는 전체 접근 방식에 동의하지 않지만 당신에 대한 권리 경로에 보이는 필요한 기능을 얻으십시오.

또한이 질문은 1 년 전입니다. 이제 이런 종류의 인증을 처리하는 대기열에 몇 가지 패키지가 있습니다.)

관련 문제