Rails 5 API 模式 ActionDispatch::Cookies

Rails 5 API mode with ActionDispatch::Cookies

我有一个 Rails 5 API,我需要使用 cookies 方法。

我需要用一些基本用户数据(不是服务器会话状态)存储前端使用的 cookie。

我的 application.rb

里有这个
config.middleware.insert_after ActionDispatch::Callbacks, ActionDispatch::Cookies

当我调用 rake middleware

时它正确显示

但这仍然发生...

NameError (undefined local variable or method `cookies' for #<SessionsController:0x007fe96fd671e8>):

控制器

class SessionsController < ApplicationController

  def login
    ...
    add_login_headers(current_company.id, user.id, user.format_rights)
    ...
  end

  private

  def add_login_headers(company_id, user_id, rights)
    ...

    cookies.permanent[Settings.cookies.app] = {
      value: JSON.generate(company_id: company_id, user_id: user_id, rights: rights),
      secure: true
    }
  end

end

我已经修复了这种贫民窟的方式,这样我就不必再添加 50,000 个额外的助手了。

def cookies
  # helpers not available in --api mode
  request.cookie_jar
end

您需要添加此控制器模块:

class ApplicationController < ActionController::API
  include ActionController::Cookies