¿Cómo puedo compartir sesiones de usuario en múltiples dominios usando Rails?
-
07-07-2019 - |
Pregunta
¿Alguien sabe de gemas, tutoriales o soluciones que permitan a un usuario iniciar sesión en un sitio web en un dominio y se le otorgue automáticamente acceso a otros dominios asociados en la misma sesión?
Tengo dos aplicaciones de rieles ejecutándose, llamémoslas App-A y App-B. App-A tiene una base de datos asociada, que permite el registro y el inicio de sesión en App-A.com. Ahora me gustaría dar a todos los usuarios con cuentas de App-A.com acceso a App-B.com, sin hacer que se registren o inicien sesión manualmente en App-B.com por separado.
Gracias de antemano por cualquier ayuda! --Marque
Solución
Puede configurar la misma sesión_clave en ambas aplicaciones. En appA environment.rb cambie la session_key, así
Rails::Initializer.run do |config|
...
config.action_controller.session = {
:session_key => '_portal_session',
:secret => '72bf006c18d459acf51836d2aea01e0afd0388f860fe4b07a9a57dedd25c631749ba9b65083a85af38bd539cc810e81f559e76d6426c5e77b6064f42e14f7415'
}
...
end
Haz lo mismo en AppB. (recuerde usar el mismo secreto)
Ahora ha compartido sesiones. 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 appB solo tienes que verificar si user_id existe en la sesión.
Este es el esquema general, puede elaborar más utilizando esta idea.
Otros consejos
Si desea crear una solución de inicio de sesión único para sus aplicaciones, le recomiendo que eche un vistazo a solución RubyCAS . También podría usarse para proporcionar un inicio de sesión único para otras aplicaciones que no sean de Rails, así como para integrar la autenticación con LDAP u otros proveedores de autenticación.