我想授权对通过移动设备进行的Websocket连接]的连接请求>。我在Connection < ActionCable::Connection::Base
中拥有的代码如下:
登录到系统后立即设置了[[cookies。该代码在Devise的module ApplicationCable class Connection < ActionCable::Connection::Base identified_by :current_user def connect self.current_user = find_verified_user end private def find_verified_user if verified_user = User.find_by(id: cookies[:user_id]) verified_user else reject_unauthorized_connection end end end end
这对于WebBrowser客户端]来说是完美的,因为我在用户使用Devise
SessionsController
中看起来像这样:class Users::SessionsController < Devise::SessionsController
# POST /resource/sign_in
def create
super
cookies[:user_id] = current_user.id
end
这很好。错误。另外,当用户从移动设备登录时,我也尝试在但是当我尝试通过移动设备连接到Websocket连接时,出现
reject_unauthorized_connection
api/signin
class Api::SessionsController < Api::ApiController
def create
user = User.find_by_email params[:email]
if user && user.valid_password?(params[:password])
# Set the user cookie
cookies[:user_id] = user.id
render json: { token: token_sign_in(user), user: user, department: user.department, organization: user.organization }
else
render json: { error: "invalid credentials" }, status: :unauthorized
end
end
是因为无法在移动应用程序上设置Cookie而发生错误吗?如果不是,那么在不使用cookie的情况下,对来自移动设备的传入Websocket连接请求进行身份验证的下一个最佳方法是什么?
我想授权通过移动设备对websocket连接的连接请求。我在Connection
tokens
或唯一标识符(在我的情况下为电子邮件ID)