升级到WebSocket失败



我有一个问题连接到web套接字。有一个错误:

Successfully upgraded to WebSocket (REQUEST_METHOD: GET, HTTP_CONNECTION: Upgrade, HTTP_UPGRADE: websocket)
  User Load (0.2ms)  SELECT  "users".* FROM "users" WHERE "users"."id" IS NULL LIMIT ?  [["LIMIT", 1]]
An unauthorized connection attempt was rejected
Failed to upgrade to WebSocket (REQUEST_METHOD: GET, HTTP_CONNECTION: Upgrade, HTTP_UPGRADE: websocket)
Finished "/cable/" [WebSocket] for 127.0.0.1 at 2016-09-11 18:57:49 +0200
Finished "/cable/" [WebSocket] for 127.0.0.1 at 2016-09-11 18:57:49 +0200

connection.rb

module ApplicationCable
  class Connection < ActionCable::Connection::Base
    identified_by :current_user
    def connect
      self.current_user = find_verified_user
      logger.add_tags 'ActionCable', "User #{current_user.id}"
    end
    protected
    def find_verified_user
      if verified_user = User.find_by(id: cookies.signed[:user_id])
        verified_user
      else
        reject_unauthorized_connection
      end
    end
  end
end

我找到了一些解决方案,我应该使用config.allowed_request_origins,但它不能解决我的问题。我尝试用session_helper添加这个方法:

def set_cookie(user)
  the_username = user.username.to_s
  cookies.permanent.signed[:username] = the_username
end

没有办法解决我的问题。

更新:我看到的问题是饼干。Signed [:user_id]为nil。你认为这是什么原因造成的吗?我使用标准的URL和端口进行测试(localhost:3000)。

我用env['warden'].user解决了我的问题。以下是更新后的方法。

   def find_verified_user
      (current_user = env['warden'].user) ? current_user : reject_unauthorized_connection
   end

在对代码进行任何更改之前,只需停止rails服务器并执行bundle install然后重新启动。也许这个问题会得到解决。

相关内容

  • 没有找到相关文章

最新更新