Rails操作电缆:授权来自移动设备的传入连接

问题描述 投票:0回答:1

我想授权对通过移动设备进行的Websocket连接]的连接请求>。我在Connection < ActionCable::Connection::Base中拥有的代码如下:

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

登录到系统后立即设置了[[cookies。该代码在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

api中设置cookie。 api代码看起来像这样: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

ruby-on-rails websocket actioncable
1个回答
0
投票
[当尝试验证来自移动设备的连接请求时,请使用

tokens

唯一标识符(在我的情况下为电子邮件ID)
© www.soinside.com 2019 - 2024. All rights reserved.