我需要为应用程序添加对多个模型(带用户的表(的支持。总的来说,除了ApplicationCable,一切都很顺利。
该应用程序有以下代码:
module ApplicationCable
class Connection < ActionCable::Connection::Base
identified_by :current_user
def connect
self.current_user = find_verified_user
end
protected
def find_verified_user
if verified_user = env['warden'].user
verified_user
else
reject_unauthorized_connection
end
end
end
end
此代码非常流行。它存在于许多来源中。
但在需要多个模型的情况下,它不起作用。前端的连接被切断,原因是:
未经授权的连接尝试被拒绝
UPD:
我意识到我可以使用一个明确的指示:
env['warden'].user(:admin)
但现在我不明白如何为ApplicationCable连接自动确定这一点。
你能告诉我你如何解决这个问题吗?
module ApplicationCable
class Connection < ActionCable::Connection::Base
identified_by :current_user
def connect
self.current_user = find_verified_user
end
protected
def find_verified_user
if verified_user = env['warden'].user(:admin)
verified_user
elsif verified_user = env['warden'].user
verified_user
else
reject_unauthorized_connection
end
end
end
end