2016-09-12 2 views
0

평균 개발이 처음인데 UserSchema에서 암호를 암호화하기 위해 bcrypt를 사용하고 있습니다. (모든 것이 이상하게 작동합니다.) 클라이언트 측에서 인증해야하므로 UserSchema에 함수를 만들었습니다.어떻게 몽구스 스키마 함수를 Restangular로 호출 할 수 있습니까?

UserSchema.methods.comparePassword = function(candidatePassword, cb) { 
    bcrypt.compare(candidatePassword, this.password, function(err, isMatch) { 
     if (err) return cb(err); 
     cb(null, isMatch); 
    }); 
}; 

지금 클라이언트 측에서이 함수를 어떻게 호출합니까? 내가 Restangular를 사용하고, 나는 이런 식으로 뭔가하려고 해요 :

user.comparePassword은 다음과 같습니다 다음

function authLogin() { 
    if(vm.user && vm.user.email && vm.user.password){ 

    User.getList({ email: vm.user.email }).then(function(user){ 

     user.comparePassword(vm.user.password, function(err, isMatch) { 
      if (err) throw err; 
      console.log(vm.user.password, isMatch); 
     }); 
    }); 
}} 

을하지만 사용자가 funciton이없는 없다는 오류 발생 함수가 아닙니다.

그래서, 무엇이 잘못 되었습니까? 아니면 클라이언트 측에서 직접 스키마 함수를 호출 할 수 있습니까?

답변

1

나는 당신의 즉각적인 질문에 대한 대답을 믿는다. (어떤 코드 샘플이 어떤 계층에 있는지 이해한다면) "클라이언트 측에서 직접 스키마 기능을 호출하는 것이 불가능하다"는 것은 서버와 클라이언트 사이드 자바 스크립트는 완전히 다른 컨텍스트에서 실행되므로 서버 측 모델이나 미들웨어에서 선언 할 함수는 클라이언트 컨텍스트에서 사용할 수 없습니다.

node와 javascript 프레임 워크를 사용하여 클라이언트 측에서 "스키마 함수를 호출하는"일반적인 해결책은 POST 또는 GET 데이터를 서버 측 API 엔드 포인트로 보낸 다음 API 코드 (또는 미들웨어 해당 API 엔드 포인트에 첨부 됨).

클라이언트 인증을 처리하는 시장 표준 방법 인 https://www.npmjs.com/package/passport 여권 인증 API 모듈을 살펴보고 애플리케이션에 쉽게 고정시킬 수 있어야한다고 제안합니다.

관련 문제