【问题标题】:How to get request.session inside ActionCable Channel?如何在 ActionCable 频道中获取 request.session?
【发布时间】:2019-11-05 07:12:27
【问题描述】:

有没有办法在Channel 中获取(或从Connection 传递)请求数据(实际上,我需要session[:_csrf_token],不要问为什么)?例如:

class MeetingChannel < ApplicationCable::Channel
  def subscribed
    session[:_csrf_token]
  end
end

目前,我只能在Connection 中获得csrf_token

module ApplicationCable
  class Connection < ActionCable::Connection::Base
    def connect
      puts "**********************************************************"
      puts "CSRF token: #{request.session[:_csrf_token]}"
      puts "**********************************************************"
    end
  end
end

输出(连接时):

**********************************************************
CSRF token: u33bsVI7HnF2bqWRfkriQUlLzIUpCcDVovgRTAkoGKM=
**********************************************************

【问题讨论】:

    标签: ruby-on-rails ruby ruby-on-rails-5 actioncable


    【解决方案1】:

    在连接中,我们创建了这个方法(因为@request是私有的):

    def session
      @request.session
    end
    

    然后,在频道中,您可以像这样访问会话:

    session = connection.session
    

    【讨论】:

      猜你喜欢
      • 2017-12-12
      • 2016-08-23
      • 2018-10-24
      • 2016-05-15
      • 1970-01-01
      • 1970-01-01
      • 2020-08-12
      • 2023-03-27
      • 2020-12-12
      相关资源
      最近更新 更多