定期登录和退出在我的应用中运行正常。但是,当我使用HTTP身份验证登录以访问JSON或XML资源然后返回并单击“注销”按钮时,它会将我重定向到登录页面,但用户仍然可以登录并可以访问任何页面。在我完全关闭浏览器之前,它不会注销。 This article更好地解释了这个问题。设计是否有任何解决方法或这仍然是一个问题?
我一直在阅读很多关于它的内容并试过work arounds here但是除了IE以外没有用。有没有办法在用户注销时使http_authenticatable凭据到期?
以下是重现此问题的步骤。
用户在完全关闭浏览器窗口之前无法注销,这可能是公共场所的安全问题。
使用devise(2.1.2)和rails(3.2.16)进行测试
答案 0 :(得分:0)
尝试在JSON / XML响应期间设置Cache-Control
标头,使其无法缓存。也许这会阻止它缓存凭证。
更新了一个如何使所有API调用不可缓存的具体示例。
在ApplicationController中:
def set_uncacheable
response.headers["Cache-Control"] = "no-cache, no-store, must-revalidate"
end
before_filter :make_api_calls_uncacheable
def make_api_calls_uncacheable
set_uncacheable if ['xml', 'json'].include?(request.format)
end