2015-09-23 6 views
0

Я строю Rails API, который взаимодействует с различными клиентами платформы. На стороне сервера есть реализуются Феи сервера что-то вроде:RAILS Faye - аутентификация токена

Faye::RackAdapter.new(:mount => '/faye', :timeout => 25) 

На стороне сервера я хотел бы добавить autentication с помощью маркеров. Я использую расширение faye:

class ServerAuth 
    def incoming(message, callback) 
    # Let non-subscribe messages throughs 
    unless message['channel'] == '/meta/subscribe' 
     return callback.call(message) 
    end 
    # Get subscribed channel and auth token 
    msg_token = message['ext'] && message['ext']['authToken'] 
    # Add an error if the tokens don't match 
    if msg_token != '12345' 
     message['error'] = 'Invalid subscription auth token' 
    end 
    # Call the server back now we're done 
    callback.call(message) 
    end 
end 

На самом деле это не работает, как я, кроме. Когда клиент передает правильный токен, все кажется, что все в порядке, но когда он передает недействительный токен, он все же способен нажимать сообщения даже на то, что он возвращает сообщение об ошибке с сервера. Как заблокировать такие сообщения, которые клиенты не смогут их восстановить (очевидно, на стороне сервера).

ответ

0

Я нашел решение для своей проблемы. Случилось так, потому что я проверял только «/ meta/subscribe» вместо других chanells, где клиенты публиковали свои сообщения. Теперь второй метод расширения для сообщений с импульсным режимом должен выглядеть так:

def incoming(message, callback) 
    return callback.call(message) if message['channel'].start_with? '/meta/' 
    <here all logic> 
    end