use*_*166 5 cookies capistrano ruby-on-rails amazon-ec2 amazon-web-services
我的团队即将结束对我们系统的大规模改革,并准备做大转变.
目前,我们使用弹性IP在AWS上托管.我们的堆栈是Ruby on Rails,我们正在使用capistrano.We还有一个黑莓应用程序和一个iPhone应用程序直播并在客户手中.应用程序和服务器之间的身份验证是通过cookie而不是任何类型的身份验证密钥.
我很清楚这不是进行身份验证的最佳方式,但遗留代码是遗留的.
由于我们公司和服务的性质,重要的是当我们切换时,用户不会被注销,并且会话通过cookie从移动应用程序传递到服务器.
我尝试了以下方法:
将DNS指向不同的IP.将弹性IP指向其他AWS实例.
在每种情况下,cookie似乎都没有兑现.
我是开发人员,而不是系统管理员,并且已经没有想法了.无论如何使用Devise on Rails或通过AWS制作新的实例荣誉cookie?或者我应该考虑另一种选择?
HTTP Cookie 不包含任何有关服务 IP 地址的信息。它们与域名(或子域的根)和路径绑定。因此,您可以随意更改服务 IP 地址,只要域名保持不变即可。在您的情况下,这两种解决方案都是有效的 - 您可以迁移 IP 地址或仅更改 DNS 记录的 IP 值。这应该足以让用户保持登录状态。
重要的、提醒性的问题是——你在哪里保存会话数据?你在 Rails 中使用什么会话存储?有可能您没有将会话数据迁移到测试环境,因此客户端已注销。
Rails 的默认会话存储是 cookie 存储(会话数据保存在客户端),因此只要应用程序中的 Secret_token 保持不变,它就应该在您的情况下“正常工作”。也许是在部署过程中重新生成的?可能值得检查一下 (config/initializers/secret_token.rb) 该令牌用于对 cookie 进行签名,以确保客户端没有更改它们。
确保所有这些要点在您的情况下都有效,并仔细检查您的测试过程,因为它应该无需任何其他操作即可工作。
归档时间: |
|
查看次数: |
281 次 |
最近记录: |