2010-06-22 19 views
6

È possibile condividere una sessione tra la mia app PHP su un sottodominio e le mie app Ruby sugli altri miei sottodomini?Condivisione di una sessione tra Ruby e PHP

Non so davvero dove portarlo da qui. So che posso impostare manualmente il dominio su quello di root in modo che il cookie sia valido per tutti i sottodomini, ma come faccio a ottenere/impostare materiale da/per la sessione in modo che sia condiviso attraverso i sottodomini?

Principalmente voglio usarlo per condividere il login per i miei sottodomini interi.

Per motivi di conoscenza, se è l'approccio sbagliato al problema, anche se è fattibile, mi piacerebbe capire sia come farlo, e perché non dovrei.

Grazie a tutti!

+0

Molto tardi alla festa, ma mi sono imbattuto recentemente in questo problema e ho postato un archivio di sessioni Rails combattibili sul mio blog (dovrebbe essere abbastanza semplice adattare i principi a un'applicazione non Rails): http : //watsonbox.github.com/blog/2012/05/01/sharing-session-between-rails-and-php/ –

risposta

6

Se si desidera condividere sessioni in questo modo (attraverso PHP/Java/Ruby/etc), è necessario salvare le sessioni (e accedervi) da un database.

Vedi: http://php.net/manual/en/function.session-set-save-handler.php

e si avrebbe bisogno di un approccio identico in Ruby.

Per condividere i cookie tra domini, è inoltre necessario modificare l'opzione di configurazione di sessione PHP per session.cookie_domain dal default di "" (che inserisce il nome di dominio) a: ".yourhost.com" (notare il periodo prefissato).

2

Questo potrebbe essere risolto con le app che condividono lo stesso database e con un piccolo aiuto di cookie.

  • Sessione aperta in php
    • Creare un cookie con stringa casuale in esso
    • Salva la stringa nel database con le credenziali utente e timestamp
  • sessione inoltrata alle rotaie
    • Verifica se il cookie esiste
    • Cerca la stringa in cookie di formare la base di dati
    • Se non viene trovata corrispondenza, quindi la sessione è accettato e le stesse credenziali utente potrebbe essere utilizzato

Sarebbe saggio per memorizzare qualche tipo di informazione unico di la workstation o il browser, in modo tale da rubare la sessione, con la copia del cookie non funzionerà.

+0

Che tipo di informazioni uniche dovrei memorizzare? E che tipo di stringa casuale dovrei generare? Se ho raccolto insieme alcune informazioni sull'host, sarebbe "abbastanza sicuro"? Come, un hash MD5 contenente l'host remoto e l'indirizzo remoto? Con quello potrei "abbinare" le informazioni dal lato del server ... Aiuto? : P –

+0

Hai capito bene. Le informazioni univoche potrebbero essere l'hash MD5 (ancora meglio se è SHA) della riga host ip + utente remoto dall'intestazione http + salt. – salchams

Problemi correlati