虽然问题几乎总是发生在Internet Explorer中的用户身上,但在Firefox和Chrome中也发生过几次。
问题在于用户尝试登录并获得422错误或只是重新定向回登录屏幕。我们有一个通配符cookie,但我们最近将其切换为目标www(大约3个月前),之前的cookie设置为在会话结束时到期。
我们最近也从Restful_athentication切换到Devise身份验证,希望能解决问题,但似乎并没有帮助。但是,我不知道这些是如何相关的,因为他们没有真正管理cookie,Rails确实如此,他们只是把东西放在cookie中。我想也许问题可能是宁静的auth在一些奇怪的条件下腐烂的东西,但显然根本不是这样的
更新
在我们切换到Devise之后,遇到此问题的用户不再出现422错误,但现在页面只是刷新而没有任何反应。我还要提一下,当他们输入他们的电子邮件来检索他们的密码时(因为他们认为他们输错了密码),它会返回系统中找不到的电子邮件。
当他们清除他们的cookie时,特别是在IE中,他们仍然会遇到同样的问题。通过在Firefox中搜索各个cookie,我已经走了几个用户并解决了这个问题。但是,只是以正常的方式清除cookie不起作用。该问题主要影响IE7用户,但似乎是整个地图,用户在Chrome,IE8,Firefox,Safari和Safari上报告了Ipad的问题。
此外,这里是session_store.rb here代码的链接,此处主机在def ensure_domain中设置,here
更新2
我做了一个非常小的调整,它改变了它,所以它总是发送一个主机。我尝试在每个浏览器上以不同的方式登录,并且没有遇到任何问题。我希望这有帮助
更新3(最后更新)
我们尝试了几个不同的组合,所以虽然我不确定是什么修复它,但我最好的猜测是将缓存从4天移到会话结束/浏览器关闭时。虽然我对此并不感到兴奋,因为我个人不喜欢每次都要登录,但我宁愿修复问题(直到我们将缓存长度更改为4天之后才发生此问题。)
发送主机是一个错误,实际上让每个人的问题都变得更糟,因为没有人能够登录。另一个奇怪的事情是,当查看创建的cookie时,有两个会话ID cookie,我猜这会导致冲突,尤其是IE7。有些用户不得不清除他们的cookie才能登录,但至少在大多数情况下这似乎都有用。
对于任何有类似问题的人,抱歉,我无法提供更多帮助!
答案 0 :(得分:0)
如果HTTPS cookie设置为“安全”,则不会在HTTP协议上发送。就好像它不存在一样。这听起来像是“剥离”你的cookie。
Cookie基础知识:如果某些内容值得通过HTTPS进行保护,并且您需要在之后跟踪该信息(即身份验证令牌),则最好将其保留在HTTPS Cookie中,并且只能从HTTPS访问它。
这是一个Cookie安全问题,最好在Secure cookies and mixed https/http site usage
进行讨论