How do I get current_user in ActionCable rails-5-api app?

后端 未结 5 1666
故里飘歌
故里飘歌 2020-12-15 20:57

Why am I not able to retrieve current_user inside my channel or how should I retrieve current_user?

What do I use?

  • Rails 5.0.
5条回答
  •  忘掉有多难
    2020-12-15 21:39

    For Rails 5 API mode:

    application_controller.rb

    class ApplicationController < ActionController::API
       include ActionController::Cookies
       ...
       token = request.headers["Authorization"].to_s
       user = User.find_by(authentication_token: token)
       cookies.signed[:user_id] = user.try(:id)
    

    connection.rb

    class Connection < ActionCable::Connection::Base
       include ActionController::Cookies
       ...
       if cookies.signed[:user_id] && current_user = User.where(id: cookies.signed[:user_id]).last
         current_user
       else
         reject_unauthorized_connection
       end
    

    config/application.rb

    config.middleware.use ActionDispatch::Cookies
    

提交回复
热议问题