2012-06-24 3 views
1

노드 익스프레스 앱에서 작업 중이며 이미 페이스 북 인증과 잘 작동하고 있습니다. 나는 지금 우리 자신의 이메일/패스워드 로그인을 가능하게하고 그것을로드 블록으로 돌리고있다. 페이스 북으로 나는 인증하는 동안 세션에 액세스하고 쓸 수 있어요 : 내가 바로이 방법 세션에 나중에 필요한 물건을 저장할 수everyauth.password에서 세션 액세스?

everyauth.faceboook 
    // Basic stuff 
    .findOrCreateUser(function(sess, accessToken, extra, fbUser) { 
     var promise = this.Promise(); 
     sess.myvar = myvar 

     // Find user in DB, etc 
     promise.fulfill(fbUser); 
     return promise() 

이 잘 작동합니다. 하지만 everyauth 비밀번호 로그인을 사용하면 같은 일을하는 방법을 잘 모르겠어요 :

everyauth.password 
    // Basic stuff 
    .authenticate(function(email, password) { 
     var promise = this.Promise();    
     // Create new user in DB, etc 

     // Now I need to save stuff to the session but I'm not sure how to access 
     // it in here... 
     promise.fulfill(newUser) 
     return promise 

그래서 everyauth의 (동일한 API를 사용)을 인증하고 로그인 방법에서 세션에 액세스 할 수있는 방법이있다. 암호?

답변

0

.authenticate 함수에서 세션에 액세스 할 수 없으며 여기에서 수행하려는 작업이 잘못되었습니다. .authenticate 함수는 login 매개 변수로 사용자를 검색하고 password 매개 변수가 사용자의 암호와 일치하는지 확인한 다음 콜백을 통해 해당 사용자의 사용자 개체를 반환해야합니다. 사용자를 만들기 위해 모든 승인을 사용하려면 .validateRegistration.registerUser 기능을 사용해야합니다.

+0

알겠습니다. - 감사합니다. 분명히 지금 인증 기능을 오용하고 있으며이를 바꿀 것입니다. 그러나 .registerUser를 사용하여 새 사용자를 만들고 싶다면 적어도 거기에있는 세션에 액세스 할 수 있습니까? – BlueMoon

+0

아니요, 할 수 없습니다. 그래서 그것은 당신이하려고하는 것이 조금 이상하다는 것을 보여주는 좋은 신호입니다. 표준 함수를 수행하는 자신 만의'.addToSession' 함수를 구현해야 할 수도 있습니다. 사용자 생성 중에 만 결정될 수있는 세션에서 저장하는 내용은 무엇입니까? – JohnnyHK

+0

기본적으로 사용자가 새로운 계정 (즉, 등록 만 했음) 또는 재 방문중인 사용자인지 여부를 나타내는 플래그를 세션에 저장하려고 계획했습니다. 당신이 말한 것에 기반하여이를 수행하는 더 좋은 방법은 사용자 모델 자체에 저장하는 것이고 다음 페이지를 표시하도록 결정할 때 다음 페이지에서 req.user를 통해 액세스 할 수 있다고 생각합니다. 새로운 사용자 흐름. – BlueMoon