ruby-on-rails - Faye 服务器错误 - 未定义方法 - 传入

标签 ruby-on-rails thin faye

在 faye.ru 中,我有带有 faye_token 的代码:

require 'faye'
require File.expand_path('../config/initializers/faye_token.rb', __FILE__)

Faye::WebSocket.load_adapter('thin')

class ServerAuth
  def incoming(message, callback)
    if message['channel'] !~ %r{^/meta/}
      if message['ext']['auth_token'] != FAYE_TOKEN
        message['error'] = 'Invalid authentication token.'
      end
    end
    callback.call(message)
  end
end

faye_server = Faye::RackAdapter.new(:mount => '/faye', :timeout => 45)
faye_server.add_extension(ServerAuth.new)
run faye_server

如果我在终端中运行此代码:

rackup faye_alt.ru -E production -s thin

如果我刷新本地主机网站 - 我会出现此错误:

[ERROR] [Faye::RackAdapter] undefined method `[]' for nil:NilClass

有什么想法吗?请帮忙!

最佳答案

消息['ext']为零。您可以通过

检查您的 message['ext'] 是否为零
def incoming(message, callback)
  if message['channel'] !~ %r{^/meta/}
    if message['ext'].nil? || message['ext']['auth_token'] != FAYE_TOKEN
      message['error'] = 'Invalid authentication token'
    end
  end
callback.call(message)
end

上面的答案是错误的,您需要清除消息['ext']['auth_token']是为了清除身份验证 token ,这样它就不会泄露给客户端。

def outgoing(message, callback)
  if message['ext'] && message['ext']['auth_token']
    message['ext'] = {} 
  end
callback.call(message)
end

关于ruby-on-rails - Faye 服务器错误 - 未定义方法 - 传入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15766586/

相关文章:

ruby-on-rails - 未定义方法 `[]=' 对于 nil :NilClass

ruby-on-rails - Rails - Assets = false,引发runtimeError

ruby - ruby 中的安全 Websocket 客户端

ruby-on-rails - Rails 瘦服务器未找到 PID

ruby - 薄( ruby )是呕吐

ruby-on-rails - ruby on rails 聊天应用程序通过端口 80 托管站点不可知(无 flash 和 websockets)

ruby - 我如何获得给定客户 ID 的 Faye 客户?

ruby-on-rails - _是什么?下面的正则表达式是什么意思?

ruby-on-rails - 延迟的工作: Configure run_at and max_attempts for a specific job

ruby-on-rails - 美国以外的 Ruby on Rails 和 Paypal