RAILS Faye -令牌身份验证



我构建与各种平台客户端交互的Rails API。在服务器端有一个faye服务器实现,类似于:

Faye::RackAdapter.new(:mount => '/faye', :timeout => 25)
在服务器端,我想通过令牌添加身份验证。我使用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

实际上它不像我想象的那样工作。当客户端传递正确的令牌时,一切似乎都是正确的,但是当他传递无效的令牌时,他仍然能够推送消息,即使他从服务器得到错误消息。我应该如何阻止这样的消息,客户端不会接收它们(显然是在服务器端)。

我找到了解决问题的方法。这是因为我只验证了"/meta/subscribe",而不是客户端发布消息的其他通道。现在,发布消息的第二个扩展方法应该如下所示:

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

相关内容

  • 没有找到相关文章

最新更新