2014-02-23 2 views
6

이걸 추적 할 수 없지만 내 설정의 경우 isAuthenticated은 로그인 성공 후 항상 false를 반환합니다. 여기에 여권 코드입니다 : (나는 충분히 열심히보고하지 않은 경우 죄송합니다) Passport 및 Passport Local req.isAuthenticated는 항상 false를 반환합니다.

req.isAuthenticated = function() { 
    var property = 'user'; 
    if (this._passport && this._passport.instance._userProperty) { 
    property = this._passport.instance._userProperty; 
    } 

    return (this[property]) ? true : false; 
}; 

그러나 얼핏에서

주위에 나는 지역 전략 어디서나 _userProperty proeprty 표시되지 않는, 그래서 나는 그 이유가 될 수 있다고 가정 항상 거짓으로 돌아가고있어?

내 응용 프로그램 코드의 코드 예제를두고 싶지만, 나는 그것이 진행 나의 일에 대한 REPO 얼핏 가지고 아마 쉽게 느낄 : passport api token sessionless

궁극적으로, 내 목표는 로그 아웃을하는 것입니다 그 보일러 판 프로젝트 (현재는 그렇지 않다)에서 제대로 작동합니다.

답변

2

사과 내 원래 질문은 처음부터 그 유용하지 않은 경우,하지만 ...

나는 여권, 여권 로컬 및 여권 - 지역 - 몽구스의 내 조합, 솔루션가 것을 발견 단순히 즉 "연결"는 passportLocalMongoose을 가지고 (내 몽구스 스키마에 무효화 방법을 만들고, 내 /logout 경로를 당한다 때 나는 기본적으로 해당 사용자의 토큰을 제거 여기에 그 방법은 다음과 같습니다.

Account.statics.invalidateUserToken = function(email, cb) { 
    var self = this; 
    this.findOne({email: email}, function(err, usr) { 
     if(err || !usr) { 
      console.log('err'); 
     } 
     usr.token = null; 
     usr.save(function(err, usr) { 
      if (err) { 
       cb(err, null); 
      } else { 
       cb(false, 'removed'); 
      } 
     }); 
    }); 
}; 

나는 그것을보고 더 흥미 추정 이 맥락에서 다시 질문에 나열된 레포를 참조하십시오. 누군가를 lps.

또한, 언급 한 libs 중 하나의 코어가 더 좋은 방법을 제안하고자한다면 나는 당연히 그것을 관용적으로 만들기 위해 내 코드를 리팩터링하는 것을 좋아할 것입니다. 그렇지 않다면이 접근 방식이 효과가있는 것으로 보입니다.

8

넣어 두는 것을 잊었을 것 같습니다. req.login(...) 안에 passport.authenticate('local', function(...){}).

See here (at the end of the page)

+0

완벽! 감사합니다 :) – Sohail

+0

주어진 링크는 login()을 호출하는 것에 관해서는 아무 것도 말하지 않습니다. Passport.authenticate() 미들웨어는 req.login()을 자동으로 호출합니다.이 함수는 req.login()을 호출하여 자동으로 로그인 할 수있는 사용자가 등록 할 때 주로 사용됩니다 새로 등록 된 사용자. " – Epirocks

관련 문제