2011-12-14 16 views
6

Devo sviluppare applicazioni multisito con single sign on domini in tutto (si parla di account Google con molteplici servizi Google come Gmail, Documenti, Google +):Applicazione multisite con accesso singolo su più domini in Rails?

multi applications, multi domains, single sign on

  • Per utilizzare infantile utente siti devono firmare sul sito principale.
  • Ogni sito ha una propria logica tranne l'accesso dell'utente, i punti e le fatture .
  • Dall'applicazione figlio devo essere in grado di accedere all'account utente globale , spendere punti utente e generare fattura per alcuni servizi.
  • Modulo di registrazione, elenco di fatture e pannello per la gestione dei punti sono disponibile solo dal sito principale/applicazione.

Qual è la migliore strategia per l'implementazione di questo su Rails 3.1? Scalabilità, prestazioni e sicurezza sono importanti.

  • Applicazioni di binari singoli o multipli?
  • Database singoli o multipli?
  • Servizi globali nell'applicazione principale o come applicazioni/motori separati?
  • Come implementare il single sign in? ID di sessione singola in DB o qualcosa come Facebook oauth?
  • Come implementare i punti spesa e generare fatture come risultato della richiesta dal sito figlio?
+0

quale approccio hai preso? – Karolis

+0

Da @ david-sulc answer, con '@ token.get ('/ customaction')' per ricevere dati personalizzati. – rogal111

risposta

5

Si dovrebbe essere in grado di implementare questo utilizzando OmniAuth con più (e indipendenti) applicazioni Rails. Questi saranno di interesse:

Blog post su questo argomento: http://blog.joshsoftware.com/2010/12/16/multiple-applications-with-devise-omniauth-and-single-sign-on/

+0

Grazie, ora come implementare le richieste a genitorialità es. metodo "spendi punti utente". Oauth2 ha '@ token.get ('/ customaction')', è appropriato? – rogal111

-1

Supponiamo quindi di creare il modello User nell'applicazione principale e di eseguirne la migrazione. Quindi ciò che devi fare è accedere a questo Datbase dalle altre applicazioni. Non è un problema In primo luogo è necessario aggiungere la definizione connessione al database dell'applicazione principale al config/database.yml dell'applicazione bambino come questo:

parent_connection: 
    adapter: your_adapter_here 
    host: your_host_here 
    username: username 
    password: password 
    database: main_application_production 

quindi si crea un modello chiamato l'utente, ma non con al lavoratore o STH. come questo. Basta creare il file manualmente in questo modo:

class User < ActiveRecord::Base 
    establish_connection :parent_connection # This uses the specified connection 
end 

Nel caso predefinito la connessione selezionata è quella che corrisponde al nome dell'ambiente. Devi solo specificare le varianti. Quindi ora puoi accedere alla classe User come nell'applicazione principale.

+0

Ok, so come stabilire una connessione dal modello al DB selezionato, ma questa è una piccola parte dell'intero problema. Ho bisogno di una soluzione/modello di progettazione soft/strategia/modello su come risolvere il problema con scalabilità, prestazioni e sicurezza. – rogal111

+0

-1, design errato per accoppiare due app sulla linea di un database. usa i servizi web –

Problemi correlati