如何在单个Rack应用程序中与多个会话Cookie(针对不同路径或域)进行交互?例如,考虑使用3个位置的以下应用程序:
- www.my-app.net => 主要应用程序 - www.my-app.net/app_a => 子应用程序A - app_b.my_app.net/ => 子应用程序B
应该能够与3个会话Cookie进行交互:
- domain=www.my-app.net;path=/; - domain=www.my-app.net;path=/app_a; - domain=app_b.my-app.net/;path=/;
Rack :: Session :: Cookie似乎是一个很好的选择,但作为中间件,会话Cookie必须在config.ru中设置,并且似乎被限制为每个Rack应用程序一个会话Cookie。
在这种特殊情况下,主Rack应用程序的重点在于轻松添加子应用程序,因此将应用程序分成多个Rack应用程序以使用Rack :: Session :: Cookie不是可行的解决方案。
理想情况下,应该有一种从Rack应用程序代码内自由交互多个会话Cookie的方法。
现在,我正在考虑:
- 编写一个中间件,允许与多个会话Cookie进行交互 - 使用CGI :: Cookie实现自定义会话Cookie管理应用内部
但两者都相当繁琐,因此我想知道是否有更简单的方法实现此功能。
感谢您提供的任何建议或建议。
- www.my-app.net => 主要应用程序 - www.my-app.net/app_a => 子应用程序A - app_b.my_app.net/ => 子应用程序B
应该能够与3个会话Cookie进行交互:
- domain=www.my-app.net;path=/; - domain=www.my-app.net;path=/app_a; - domain=app_b.my-app.net/;path=/;
Rack :: Session :: Cookie似乎是一个很好的选择,但作为中间件,会话Cookie必须在config.ru中设置,并且似乎被限制为每个Rack应用程序一个会话Cookie。
在这种特殊情况下,主Rack应用程序的重点在于轻松添加子应用程序,因此将应用程序分成多个Rack应用程序以使用Rack :: Session :: Cookie不是可行的解决方案。
理想情况下,应该有一种从Rack应用程序代码内自由交互多个会话Cookie的方法。
现在,我正在考虑:
- 编写一个中间件,允许与多个会话Cookie进行交互 - 使用CGI :: Cookie实现自定义会话Cookie管理应用内部
但两者都相当繁琐,因此我想知道是否有更简单的方法实现此功能。
感谢您提供的任何建议或建议。
use Rack::Session::Cookie
,我会得到一个当前会话的 cookie。但似乎再次调用它会用新的 cookie 覆盖旧的 cookie(我无法再访问旧的 cookie)?我应该创建多个类并在每个类中调用"use"来获得不同的 cookies吗?欢迎所有输入/代码示例! - Steve Midgleyresponse.set_cookie(key, string)
解决了我的问题 - 这将基于启用cookie时设置的cookie配置参数添加一个新的cookie键值对集合。再次感谢您的跟进! - Steve Midgley