나는 로컬 전략과 JWT와 함께 인증/승인을 위해 여권을 사용하고 있습니다. 일부 연구에 따라돛 소켓 인증 (여권 사용)
(집중적 인 인터넷 검색) I 권한 부여를위한 최고의 장소는 '가상 보낼 수 있습니다 SailsSocket
개체를 통해 정기적으로 HTTP 요청 및 소켓 요청 (모두에 적용되는 정책을 사용하는 것을 이해 HTTP 같은 요청).
저는 이제 소켓을 올바르게 사용하는 방법을 알아 내려고 노력하고 있으며 연결을 거부 할 수있는 beforeConnect
처리기가 있다는 것을 보았습니다. 큰 문제는 아니지만 (데이터를 가져올 수 없도록하는 정책이 있음) 연결을 거부 할 수 있기를 원합니다. 더 건강하고 어떤 이유로 소켓을 연결할 수 있는지 생각합니다.
이 보인다
io.sails.url = connections.http.baseURL;
io.sails.headers = {
'Authorization': 'Bearer ' + token
};
io.sails.useCORSRouteToGetCookie = false;
io.socket = io.sails.connect();
io.socket.on('...', someHandler);
이 잘 작동하기 - 소켓 요청이 JWT 정책 안타를 소켓 요청에 대한 컨트롤러 메서드에서 req.user를 얻습니다.
내 질문은 - 내가 연결하는 토큰없이 사용자를 거부 가야합니까 어떻게이 beforeConnect
내부에 침입했을 때 나는 악수의 인증 헤더가 표시되지 않습니다
(나는 심지어해야합니까?) 목적.
업데이트 :는 또한, 지금 연결할 때 쿼리에서 토큰을 보내려고하고있다 : 그와
io.socket = io.sails.connect({token: token});
, 나는 핸드 셰이크에있는 토큰을 볼 수 있어요. 나는 그것이 존재하지 않는 handshake.query
에있을 것으로 기대합니다. 대신, handshake._query
에서 사용할 수 있지만 돛 워드 프로세서 (here)이다하에해야한다 주장 socket.handshake.query
(그러나 socket
도 beforeConnect
에 존재하지 않고, 기본 기능 풋 프린트 beforeConnect: function(handshake, cb)
입니다)
이 버그 있습니까? 내가 놓친 게 있니?