ruby on rails - territoriales - Rieles: múltiples dominios de nivel superior y una sola sesión/cookie
tipos de dominios (5)
Es probable que necesite algo como RubyCAS si desea autenticación entre dominios independientemente de si son de nivel superior o de subdominios.
He estado luchando con esto por bastante tiempo y no he podido encontrar una solución. Necesito que un usuario pueda ver múltiples dominios de nivel superior con un solo inicio de sesión.
Tengo entendido que esto debe establecerse en environment.rb
y before_dispatch
con before_dispatch
. Esto es lo que se me ocurrió:
require ''activesupport''
require ''dispatcher''
module ActionController
class Dispatcher
def set_session_domain
ActionController::Base.session_options.update :session_domain => "#{@request.host}"
end
before_dispatch :set_session_domain
end
end
Sin embargo, esto no parece funcionar cuando intento extraer los valores de la session[:session_domain]
.
Cualquier ayuda es muy apreciada.
Este es un poco complicado. Como las cookies solo se pueden asignar (y recuperar) al dominio actual ("forms.example.com", por ejemplo) y a los dominios principales (".example.com", pero no a ".com"), pero NO a otros dominios. ("othersite.com"), tendrás que buscar otra solución. Esto no tiene nada que ver con Rails, sino con el funcionamiento de las cookies.
EDITAR: las sesiones se basan en un identificador específico del cliente, almacenado en una cookie, por lo que las sesiones tampoco funcionan entre dominios.
Este sitio tiene una posible solución para crear una cookie entre dominios, y es la forma más limpia que conozco, aunque puede tener algunas implicaciones de seguridad. Una versión más complicada haría que los servidores se comunicaran directamente a través de un canal seguro.
Si está buscando un servicio de inicio de sesión único más general, intente implementar alguna forma de OpenID .
Para subdominios en Rails 2.3
ActionController::Base.session = { :domain => ".mydomain.com" }
Para dominios de nivel superior prueba este middleware .
He estado jugando con el middleware anterior por el momento y no funciona como esperaba. Si usa el middleware, no necesita el código anterior, ya que también maneja subdominios.
Su pregunta no es realmente lo suficientemente precisa en mi humilde opinión. ¿Desea una única cookie para todas las aplicaciones de Rails que tiene o está dentro del contexto de una sola? Si lo primero, desea buscar soluciones utilizando sesiones respaldadas por la base de datos o algo a lo largo de la línea de RubyCAS para implementar el protocolo CAS .
Tanto Keltia como zuk tienen razón, la respuesta es rubyCAS, tenemos que hacer esa integración y permite
SSI - Single sign -in Usted se registra en un sitio y usted se registra automáticamente en el otro
SSO - Single Sign Out. Usted cierra la sesión de un sitio y automáticamente se desconectó del otro
Para nosotros, esta es una solución comprobada y no difícil de implementar
lo estamos usando en http://www.cabslk.com y www.ticketslk.com
salud, Sameera