2016-10-22 3 views
0

whatsapp와 같은 채팅을 만들고 싶습니다. (각 사용자는 자신과 만 통화 할 수있는 대화 상대 목록이 있습니다.) 내 서버 인증은 Facebook 북 토큰을 기반으로합니다. 그리고 내 소켓 인증을 동일하게하고 싶습니다.돛, 소켓 및 권한 부여

현재 시나리오 : - 사용자가 로그인 한 후 프런트 엔드가 소켓 연결 요청을 내 돛 서버로 전송합니다. - 서버 "beforeConnect"기능에서, 나는 fb 토큰으로 사용자를 찾습니다. - 사용자를 찾았 으면 소켓이 성공적으로 연결되었습니다.

문제 : 소켓에서 사용할 수 있도록 사용자 세부 정보가 필요합니다. 채팅 내용을 찾고 해당 채팅 내용과 새 메시지 만 업데이트하려고하기 때문입니다.

이것이 바로 beforeConnect 함수의 모습입니다. enter image description here

P.S는 : 그것은 언급 할 가치가 있는지 모르겠어요,하지만 난 내 돛 서버 소켓을 연결하는 I는 문서에서 본 sails.io.js를 클라이언트 측에서 socket.io를 사용하고 있지 않다.

+0

와 비트 토큰을 통과하지만 ... 당신은 컨트롤러에서 사용자 정보를 필요로 할 수 있습니까? 지금까지 수집 한 내용 중에서'req.socket.getId()'사용자와 세션 데이터와 함께 사용자에게 연결할 수 있습니다. 내가 읽은 바에 따르면 더 나은 접근법은 http://angular-tips.com/blog/2014/05/json-web-tokens-examples/ (api/policies/tokenAuth를 찾으십시오.)와 같은 정책을 사용하는 것입니다. js). FB에 대해 매번 인증을 받으면 비쌉니다. –

답변

0

으로 onConnect 방법은 최신 버전에 대한 사용되지 않습니다, 당신은 연결 이벤트에 토큰 인증을 수행 할 수 있습니다, 당신은/bootstrap.js

module.exports.bootstrap = function(cb) { 

    // handle connect socket first event executes after logged in 
    sails.io.on('connect', function (socket){ 
     // store facebook token here 
    }); 

    // handle custom listener for other stuff 
    sails.io.on('doSomeStuff', function (socket){ 
     // check facebook token match with requested token 
    }); 
cb(); 
}; 
을 토큰 동안 저장 연결하고 인증을 위해 다른 청취자 확인, 설정이 코드를 삽입해야

클라이언트 : 당신은 "doSomeStuff"간단한 발광 후 페이스 북으로 로그인 늦은 각 요청

+0

대단히 감사합니다! - 현재 사용자가 연결을 시도하는 것처럼 각 요청마다 권한을 부여합니다. 나는 자신의 fb 토큰을 처리하고 연결하도록합니다. 소켓이 연결 되더라도 각 요청에 따라 fb 토큰을 보내고 사용자를 찾은 다음 계속 컨트롤러에 연결하십시오. 매번 fb 토큰을 처리해도 괜찮습니까? –

+0

안녕하세요 @ TalGvili, 인증 사용자는 다음 게시물 토큰을 관리하는 방법에 대한 자세한 정보를 제공 –

+0

[링크] (http://stackoverflow.com/questions/19548009/user-authentication-using-socket-io) –