Ruby on rails Rails-在会话上过期\u存储不允许更改会话
我的网站是一个单页rails应用程序,与rails api交互。我最近添加了一个api端点,允许用户通过ajax注销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
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