Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/EmptyTag/135.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails-在会话上过期\u存储不允许更改会话_Ruby On Rails_Ajax_Session_Cookies - Fatal编程技术网

Ruby on rails Rails-在会话上过期\u存储不允许更改会话

Ruby on rails Rails-在会话上过期\u存储不允许更改会话,ruby-on-rails,ajax,session,cookies,Ruby On Rails,Ajax,Session,Cookies,我的网站是一个单页rails应用程序,与rails api交互。我最近添加了一个api端点,允许用户通过ajax注销 class Api::SessionsController < Api::ApplicationController ... # DELETE /api/sessions/destroy def destroy session.delete(:user_id) render json: { success: true } end

我的网站是一个单页rails应用程序,与rails api交互。我最近添加了一个api端点,允许用户通过ajax注销

class Api::SessionsController < Api::ApplicationController
  ...      

  # DELETE /api/sessions/destroy
  def destroy
    session.delete(:user_id)
    render json: { success: true }
  end

  ...
end
现在,在通过ajax点击我的sessionsdestroy端点之后,重新加载页面会让用户重新登录,并且会话中仍然有用户id

我的猜测是,浏览器的cookie不会像添加expire\u after参数之前那样被DELETE ajax请求覆盖,但这很难验证,因为存储的cookie是加密的

是否有人有任何解决方案想法或调试路径


有人知道这里发生了什么吗?

当您设置:expire\u after以设置cookie的过期时间时,即使浏览器关闭,它也会使cookie保持到给定的日期。这意味着在Rails会话中更改某些内容时,必须更新cookie。实现这一点最简单的方法是重新创建cookie。

我不确定我是否理解您建议我做什么。。你是说我应该在回复后更新客户端的烹饪?默认rails不应该在会话更改时处理更新cookie吗?完全正确。本文对此进行了更好的解释
AppName::Application.config.session_store :cookie_store,
-  key: session_key, domain: TOP_LEVEL_DOMAIN
+  key: session_key, domain: TOP_LEVEL_DOMAIN, expire_after: 1.month