2008-11-08 12 views
9

¿Alguien conoce alguna gema, tutorial o solución que permita a un usuario iniciar sesión en un sitio web en un dominio y otorgar automáticamente acceso a otros dominios asociados en la misma sesión?¿Cómo puedo compartir sesiones de usuario en múltiples dominios usando Rails?

Tengo dos aplicaciones de rieles en ejecución, llamémoslas App-A y App-B. App-A tiene una base de datos asociada, lo que activa el registro y el inicio de sesión en App-A.com. Ahora me gustaría dar acceso a App-A.com a todos esos usuarios con cuentas de App-A.com, sin hacer que se vuelvan a registrar o inicien sesión manualmente en App-B.com por separado.

¡Gracias de antemano por cualquier ayuda! --Marca

Respuesta

5

Puede establecer la misma session_key en ambas aplicaciones. En appA environment.rb cambiar el session_key, como este

Rails::Initializer.run do |config| 
    ... 
config.action_controller.session = { 
    :session_key => '_portal_session', 
    :secret  => '72bf006c18d459acf51836d2aea01e0afd0388f860fe4b07a9a57dedd25c631749ba9b65083a85af38bd539cc810e81f559e76d6426c5e77b6064f42e14f7415' 
    } 
    ... 
end 

hacer lo mismo en AppB. (recuerde utilizar el mismo secreto)

Ahora tiene sesiones compartidas. Supongamos que utiliza restfull_authentication, que establece una variable de sesión llamada user_id. Cuando se autentica en appA establece el user_id en la sesión. Ahora, en la aplicación B solo tienes que verificar si user_id existe en la sesión.

Este es el esquema general, puede elaborar más utilizando esta idea.

+3

Por lo que puedo ver, ¿esto solo funcionaría si ambas aplicaciones están en el mismo dominio? – gtd

+2

Correcto, esta solución no funciona en varios dominios. – TuteC

1

Si desea crear una solución de inicio de sesión único para sus aplicaciones, entonces le recomiendo echar un vistazo a la solución RubyCAS. También podría usarse para proporcionar un inicio de sesión único para otras aplicaciones que no sean Rails, así como para integrar la autenticación con LDAP u otros proveedores de autenticación.

Cuestiones relacionadas