用户登录或多次重定向后是不是可以保留 cookie?

Posted

技术标签:

【中文标题】用户登录或多次重定向后是不是可以保留 cookie?【英文标题】:Is it possible to persist a cookie after User login or multiple redirects?用户登录或多次重定向后是否可以保留 cookie? 【发布时间】:2022-01-17 22:39:04 【问题描述】:

我正在处理一个流程,如果 User 未登录,我会将 config 哈希存储在 cookie 中,以便在 User 登录后检索,以便流程可以继续。

启动控制器:

def index
  if current_user.nil?
    cookies.signed[:config] = config

    redirect_to new_session_path
  end
end

会话控制器:

def new
  cookies.signed[:config].present? # true
end

def create
  # authentication logic

  redirect_to admin_users_path
end

用户控制器:

def index
  cookies.signed[:config].present? # false
end

我可以在第一次重定向后从SessionsControllernew 操作中检索所述cookie,但在User 登录并再次重定向到最终目的地(create 操作)之后,cookie 似乎是删除,因为cookies.signed[:config] 返回nil

我没有明确删除 cookie,我尝试使用 session[:config] = config 而不是 cookies.signed,但结果相同。

是否可以通过多次重定向或User 登录来保留 cookie?

或者我是否必须在每个控制器操作中设置 cookie,以便将其传递到我实际使用它的地方?

编辑:问题是我们的通用登录控制器位于子域app.ourapp.com 下,而登录的User 被重定向到business.ourapp.com

在创建 cookie 期间未指定域时,默认使用 request.domain,因此从未为 business.ourapp.com 创建 cookie。

解决方法是在创建 cookie 时传递 domain 参数,以便为 app.ourapp.combusiness.ourapp.com (cookies.signed(:cookie_name, domain: "ourapp.com") 创建它

【问题讨论】:

我找到了答案,而不是添加 EDIT。要么回答你自己的问题,考虑到你的问题是合理的,这将是一个可接受的行动,或者删除这个问题。很少有人会遇到一个问题并期望它包含答案(他们会在答案部分查看),因此这篇文章不适合 SO 的性格。 【参考方案1】:

问题是我们的通用登录控制器位于子域app.ourapp.com 下,而登录的User 被重定向到business.ourapp.com

在创建 cookie 期间未指定域时,默认使用 request.domain,因此从未为 business.ourapp.com 创建 cookie。

解决方法是在 cookie 创建中传递域参数,以便为 app.ourapp.combusiness.ourapp.com (cookies.signed(:cookie_name, domain: "ourapp.com") 创建它

【讨论】:

以上是关于用户登录或多次重定向后是不是可以保留 cookie?的主要内容,如果未能解决你的问题,请参考以下文章

使用快递设置cookie后如何重定向url?

重定向后PHP脚本是不是可以继续? [复制]

python requests 爬虫模拟登录后访问一些界面还是会重定向到登录界面?

重定向到 /login 后如何再次登录而没有任何 http 错误

正确登录后如何重定向用户?

Httpclient 4,错误 302。如何重定向?