【发布时间】:2014-03-22 05:12:14
【问题描述】:
我的网站是一个与 rails api 交互的单页 rails 应用程序。我最近添加了一个 api 端点,允许用户通过 ajax 注销。
class Api::SessionsController < Api::ApplicationController
...
# DELETE /api/sessions/destroy
def destroy
session.delete(:user_id)
render json: { success: true }
end
...
end
在我更改会话存储以在用户退出浏览器时保留会话之前,此端点工作正常。
config/initializers/session_store.rb差异:
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
现在,在通过 ajax 访问我的 sessions#destroy 端点后,重新加载页面会重新登录用户,并且会话中仍然有 user_id。
我的猜测是浏览器的 cookie 没有被 DELETE ajax 请求覆盖(就像我添加 expire_after 参数之前一样),但这很难验证,因为存储的 cookie 是加密的。
有没有人有解决思路或调试路径?
有人知道这里发生了什么吗?
【问题讨论】:
标签: ruby-on-rails ajax session cookies