【问题标题】:Rails session cookie not working with chromeRails 会话 cookie 不适用于 chrome
【发布时间】:2023-01-29 22:37:27
【问题描述】:

红宝石:3.1.3 导轨版本:6.1.6.1 Chrome 版本:109.0.5414.119

在会话控制器的 cookie 中设置 user_id,但它没有显示在后续请求中,并且在 chrome 中查看应用程序检查器它没有显示任何 cookie 集。

这是设置cookie的控制器和函数

class Api::Auth::UserController < ApplicationController

  def create_session
    user = User.find_by(email: params[:email])

    if user.present?
      head :unauthorized unless user.authenticate(params[:password])
      session[:current_user_id] = user.id
      @success = true
      debugger
    else
      head :unauthorized
    end
  end

session[:current_user_id]nil 时,除了我抛出的 401 unauthorized 之外,没有其他错误消息。

在 firefox 上完美运行,但出于某种原因,Chrome 不会保留试图设置的 cookie。

【问题讨论】:

  • Rails.application.config.session_store 在您的 Rails 应用程序中是如何配置的?是否有可能通过在某处调用 before_action 来禁用 API 控制器中的会话或 cookie?

标签: ruby-on-rails ruby google-chrome session


【解决方案1】:

根据 https://api.rubyonrails.org/classes/ActionDispatch/Cookies.html 的文档,最好使用 cookie 而不是会话

你应该能够做到这一点:

cookies[:current_user_id] = user.id

如果您认为这应该受到保护,您也可以使用加密来存储值。

您可以通过几个线索来调查 Chrome 无法正常工作的原因:

【讨论】:

    猜你喜欢
    • 2018-12-04
    • 1970-01-01
    • 1970-01-01
    • 2020-11-22
    • 2012-05-23
    • 2022-06-17
    • 1970-01-01
    • 2013-05-03
    相关资源
    最近更新 更多