2016-10-22 4 views
0

Я хочу построить чат как whatsapp. (У каждого пользователя есть список контактов, который он может говорить только с ними) Мой сервер auth основан на токенах facebook. И я бы хотел, чтобы мои сокеты auth были одинаковыми.Паруса, Розетки и авторизация

Текущий сценарий: - после входа пользователя во внешний интерфейс отправляет запрос на соединение сокета на мой сервер парусов. - В функции «beforeConnect» сервера я нахожу пользователя его фишкой fb. - пользователь найден, разъем успешно подключен.

Проблема: Мне нужны детали для пользователей, которые будут доступны в сокете. Это потому, что я хочу найти его чаты и обновить его только по его чатам и новым сообщениям.

Так выглядит моя функция beforeConnect. enter image description here

P.S: Не знаю, стоит ли это упоминать, но я использую Socket.io на стороне клиента, а не на sails.io.js я видел в документах, чтобы соединить свои гнезда парусов Server.

+0

немного поздно, но ... вам нужно пользовательские данные в контроллерах? Из того, что я собрал до сих пор, вы можете либо пользователь 'req.socket.getId()', а затем вместе с данными сеанса связывать его с пользователем. Из того, что я читал, кажется, что лучше использовать политику, как в http://angular-tips.com/blog/2014/05/json-web-tokens-examples/ (ищите api/policy/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» после того, как войти в систему с Facebook и передать маркер с каждым запросом

+0

Большое спасибо! - В настоящее время я выполняю авторизацию по каждому запросу, например, если пользователь пытается подключиться - я обрабатываю его fb-токен и позволяю ему подключаться. даже если сокет подключен, с каждым запросом я посылаю токен fb, нахожу пользователя, а затем продолжаю контроллер. Все в порядке обрабатывать токен fb каждый раз? –

+0

hello @TalGvili, для последующей проверки подлинности пользователя после получения дополнительной информации о том, как управлять токеном –

+0

[ссылка] (http://stackoverflow.com/questions/19548009/user-authentication-using-socket-io) –