2014-11-28 3 views
-1

Nodejs 서버와 통신하는 Phonegap 응용 프로그램이 있습니다.Phonegap + Hello.js (서버 측 인증)

또한 Facebook\Twitter 로그인의 경우 Hello.js 라이브러리 (매우 사용하기 쉽습니다)를 사용하고 있습니다.

불행히도이 라이브러리는 클라이언트 측 로그인 (인증) 만하기 때문에 서버 측에서는 사용자가 유효한지 여부를 알지 못합니다 (Facebook \ Twitter에 푹 빠져 있습니다).

편집 : 사용자가 (클라이언트 측에서) 로그인 한 후 Hello.js은 Facebook 고유 사용자 ID로 사용자 자격 증명을 제공하지만 안전하게 서버에 전달하는 방법을 모르거나 일반적으로 내 DB에서 사용자 ID로 사용하는 것이 좋습니다.

서버 측 로그인의 유효성을 확인하는 간단한 예제를 찾고 있습니다.

감사합니다.

답변

1

이 내가 생각으로 주요 아이디어 : 사용자가 로그인 한 후 폰갭 응용 프로그램에서

,이 기능 여기

빠른 예입니다 전화 번호 :

hello.on('auth.login', function(r){ 
    var token = r.authResponse.access_token; 
} 

이제 서버에 token 만 보낼 수 있으며 서버는 Facebook에서 직접 사용자 자격 증명을받습니다. 이 USR 전화 Facebook에 예를 들어

:

https://graph.facebook.com/me?access_token= {토큰} 답장을

2

https를 사용중인 경우 서버에 ID를 보내는 것이 좋습니다. 할 수있는 일은 해당 고유 ID가 이미 DB에 있는지 확인하고 필요한 경우 사용자 데이터를 반환하거나 새 계정을 만드는 것입니다.

또한 서버 측에서 JWT (JSON Web Token)를 생성하고이를 로컬 저장소에 저장하기 위해 다시 응용 프로그램에 전송하고 노드 서버에 대한 모든 향후 요청의 유효성을 검사하는 데 사용하는 것이 좋습니다. 모든 경로에서 미들웨어로 jwt.verify 메소드를 사용하면이 메소드를 매우 쉽게 구현할 수 있습니다.

var jwt = require('jsonwebtoken'); 
 

 
var jwtValidation = function(req, res, next) { 
 
    var token = req.body.jwt_token; 
 
    if (token) { 
 
    jwt.verify(token, 'yourSecretKeyHere', function(err, decoded) { 
 
     if (err) { 
 
     // Error when checking JWT - redirect to unauthorized 
 
     res.redirect('/unauthorized'); 
 
     } else if (decoded.id) { 
 
     // Token that was passed in has been decoded 
 
     // Check your DB for the decoded.id 
 
     // Complete any other needed tasks then call next(); 
 
     next(); 
 
     } else { 
 
     // Something else went wrong - redirect to unauthorized 
 
     res.redirect('/unauthorized'); 
 
     } 
 
    }); 
 
    } else { 
 
    // No token present - redirect to unauthorized 
 
    res.redirect('/unauthorized'); 
 
    } 
 
}; 
 
module.exports = jwtValidation;

+0

감사합니다,하지만 내 질문에 대답 아니에요, 내가 HTTPS를 사용하지 않는, 나는 여전히 이 ID가 고유한지 여부를 모르겠지만 내가 틀렸다면 수정 해주십시오. 그러나이 솔루션을 사용하면 누군가가 자신의 ID (HTTP 게시 요청)를 알면 다른 사용자로 포즈를 취할 수 있으므로 서버 측 인증이 아닙니다. – Guy

+0

https를 사용하지 않는다면 올바르게 작동합니다. ID는 사용자가 OAUTH를 전달하여 보안이 작동하는 곳에서만 전달됩니다. –