Come posso condividere sessioni utente su più domini usando Rails?
-
07-07-2019 - |
Domanda
Qualcuno è a conoscenza di gemme, tutorial o soluzioni che consentono a un utente di accedere a un sito Web in un dominio e di avere automaticamente accesso ad altri domini partner nella stessa sessione?
Ho due app in esecuzione, chiamiamole App-A e App-B. App-A ha un database ad esso associato, che alimenta la registrazione e il login su App-A.com. Vorrei ora dare a tutti quegli utenti con account App-A.com l'accesso ad App-B.com, senza doverli registrare nuovamente o accedere manualmente ad App-B.com separatamente.
Grazie in anticipo per qualsiasi aiuto! --Mark
Soluzione
Puoi impostare lo stesso session_key in entrambe le app. In appA environment.rb cambia session_key, in questo modo
Rails::Initializer.run do |config|
...
config.action_controller.session = {
:session_key => '_portal_session',
:secret => '72bf006c18d459acf51836d2aea01e0afd0388f860fe4b07a9a57dedd25c631749ba9b65083a85af38bd539cc810e81f559e76d6426c5e77b6064f42e14f7415'
}
...
end
Fai lo stesso in AppB. (ricorda di usare lo stesso segreto)
Ora hai sessioni condivise. Supponiamo che tu usi restfull_authentication, che imposta una variabile di sessione chiamata user_id . Quando esegui l'autenticazione in appA, imposta user_id nella sessione. Ora, in appB devi solo verificare se user_id esiste nella sessione.
Questo è lo schema generale, puoi elaborarne di più usando questa idea.
Altri suggerimenti
Se desideri creare una soluzione Single Sign-On per le tue applicazioni, ti consiglio di dare un'occhiata a RubyCAS soluzione. Potrebbe essere utilizzato anche per fornire Single Sign-On per altre applicazioni non Rails e per integrare l'autenticazione con LDAP o altri provider di autenticazione.