如何在 ActionCable Channel 中获取 request.session?
How to get request.session inside ActionCable Channel?
有没有办法在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=
**********************************************************
在连接中,我们创建这个方法(因为 @request
是私有的):
def session
@request.session
end
然后,在频道中您可以像这样访问会话:
session = connection.session
有没有办法在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=
**********************************************************
在连接中,我们创建这个方法(因为 @request
是私有的):
def session
@request.session
end
然后,在频道中您可以像这样访问会话:
session = connection.session