0

我有一个带有子域的 rails 4 应用程序。

每个注册的用户都有一个子域,他用它来使用整个系统。

这是我遇到的问题

用户使用像 sub.lvh.me/login 这样的 url 登录,一旦登录,我将用户重定向到他的子域上的 url,比如 sub.lvh.me/home,但他一到那里就注销了. 会话信息被清除。

这是我的 session_store 初始化程序中的内容

Repvista::Application.config.session_store :cookie_store, key: '_repvista_session', domain: :all

这不应该工作吗?

更新:

我注意到,如果我使用主域 lvh.me 登录,然后转到 sub.lvh.me 我已登录,我希望能够通过子域 url 登录。

谢谢

4

1 回答 1

0

这是来自维基百科页面

cookie 域和路径定义了 cookie 的范围——它们告诉浏览器 cookie 应该只针对给定的域和路径发送回服务器。如果未指定,则默认为所请求对象的域和路径。用户登录后来自网站的 Set-Cookie 指令示例:


设置 Cookie:LSID=DQAAAK…Eaem_vYg;域=docs.foo.com;路径=/帐户;过期=格林威治标准时间 2021 年 1 月 13 日星期三 22:23:01;安全的; HttpOnly

设置 Cookie:HSID=AYQEVn….DKrdst;域=.foo.com;路径=/; 过期=格林威治标准时间 2021 年 1 月 13 日星期三 22:23:01;HttpOnly

设置 Cookie:SSID=Ap4P….GTEq;域=.foo.com;路径=/; 过期=格林威治标准时间 2021 年 1 月 13 日星期三 22:23:01;安全的; HttpOnly

……


第一个 cookie LSID 具有默认域 docs.foo.com 和路径 /accounts,它告诉浏览器仅在请求包含在 docs.foo.com/accounts 中的页面时才使用 cookie。其他 2 个 cookie HSID 和 SSID 将由浏览器在任何路径上请求 .foo.com 中的任何子域时发回,例如 www.foo.com/。

Cookie 只能在顶级域及其子域上设置。出于安全原因,从 www.bar.com 在 www.foo.com 上设置 cookie 将不起作用。

希望这可以帮助您了解会话 cookie 范围的工作原理。

于 2013-11-10T14:28:56.617 回答