当前位置:  开发笔记 > 后端 > 正文

application和actioncable不会共享cookie

如何解决《application和actioncable不会共享cookie》经验,为你挑选了1个好方法。

我正在使用设计进行身份验证,但是当我实现您的方法时,我得到"未经授权的连接尝试被拒绝"

经过几个小时的搜索,我发现:

cookies.signed['user.id']

返回零.在以下代码块中.

def find_verified_user
  if verified_user = User.find_by(id: cookies.signed['user.id'])
    verified_user
  else
    reject_unauthorized_connection
  end
end

我检查了肯定有一个cookie,但它不包含Devise设置的cookie数据.

要检查'user.id'是否实际设置,我在视图中提升它.这是例外,返回用户ID

Signed in as @#{cookies.signed[:username]}.
- raise(cookies.signed['user.id'].inspect)
%br/
%br/
#messages
%br/
%br/
= form_for :message, url: messages_path, remote: true, id: 'messages-form' do |f|
 = f.label :body, 'Enter a message:'
 %br/
 = f.text_field :body
 %br/
 = f.submit 'Send message'

我的问题/问题:

似乎cookie在actioncable服务器上不可用.
有没有办法与有线服务器共享Devise设置的cookie?

https://github.com/stsc3000/actioncable-chat.git



1> Pwnrar..:

检查连接到Action Cable服务器的客户端JavaScript文件.有些教程你把它放在'app/assets/javascripts/application_cable.coffee'和其他'app/assets/javascripts/channels/index.coffee'中,但它看起来像这样:

#= require cable

@App = {}
App.cable = Cable.createConsumer("ws://cable.example.com:28080")

您需要WebSocket地址指向您的Cable服务器,并且该地址需要与您的应用程序的其余部分共享cookie命名空间.你很可能指向错误的地方,例如,如果你在本地工作,你需要改变:

App.cable = Cable.createConsumer("ws://cable.example.com:28080")

App.cable = Cable.createConsumer("ws://localhost:28080")

假设您的Cable服务器正在端口28080上运行(在bin/cable可执行文件中指定).还要确保清除浏览器缓存,以便更新的文件是浏览器使用的文件.

推荐阅读
小色米虫_524
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有