Vij*_*han 1 ruby ruby-on-rails devise ruby-on-rails-4
我正在用设计创建一个应用程序.有两个域名1)www.test.com和2)www.hello.com这两个域都指向同一个应用程序.所以我想在两个应用程序之间共享session(current_user).用户将登录(1)并且应该访问域(2).
请建议什么是最好的方式.
这里的基本问题是cookie的工作方式(会话当然取决于).Cookie具有域属性,浏览器只发送域名与请求主机匹配的Cookie(域名开头的句点含义有点微妙)
此外,在设置cookie时,浏览器只接受作为当前域的父域并且不是公共域的域.例如,如果您收到来自www.example.com它的响应,可以为www.example.com或设置cookie example.com,但不能.com(浏览器列出不应允许的域名).
所有这一切都说,如果你的两个应用程序不共享一个共同的父级(就像你的情况一样),那么你就不能共享cookie,因此你无法共享一个rails会话.
有许多方法可以解决这个问题,一个简单的方法称为CAS(中央身份验证服务)协议.这个的基本流程是
sso.example.com/service?=http://hello.com/homehello.com 设置会话cookie,以便后续请求可以跳过步骤2-6cas的ruby实现(例如rubycas同时具有cas客户端和服务器)并设计 使用CAS的策略.当然还有其他方法可以做到这一点,例如使用誓言,但CAS更简单一些.
| 归档时间: |
|
| 查看次数: |
2430 次 |
| 最近记录: |