Joomla.it Forum
Non solo Joomla... => Sviluppo => : tampe125 03 Nov 2010, 21:12:00
-
salve a tutti, so che sto per chiedere una cosa "stupida", ma tant'è...
questa è la situazione:
per ragioni di "marketing" l'utente deve fare il login sul portale e poi dopo essere ridirezionato sulla sua parte del sito che è sempre fatto con Joomla!.
ovviamente anche quest'ultima parte è coperta dal login.
è possibile che una volta effettuato il login sul portale, l'utente venga redirezionato (loggato) direttamente sul secondo sito?
-
Ciao
Certo lo puoi fare con jfusion basta che sincronizzi gli utenti delle due installazioni joomla e poi al primo login redirezioni l'utente alla sua parte del secondo sito, non puoi però redirezionare utenti diversi a percorsi diversi.
-
ecco, invece avrei bisogno di fare proprio questo... :-\
-
ciao,
non ho capito che vuoi fare.
i due siti sono differenti installazioni di joomla? ogni utente ha un suo sito?
mi loggo sul portale e vengo re-indirizzato al mio sito mantenendo l'autenticazione? si può fare, ma serve un po' di programmazione tosta... come te la cavi?
ciao,
marco
-
1- si
2- si
3- si
al momento mi sono messo il cappello da minatore e sto guardando come funziona il tutto.
la mia idea era questa (di un forza bruta inaudita):
l'utente si logga sul portale.
io prendo i dati della sessione del portale e li inserisco nel jos_session del "figlio".
creo il cookie con i dati del figlio.
reindirizzamento sul figlio
teoricamente dovrebbe funzionare, è come se facessi il login di joomla e poi ritornassi sul sito figlio.
la mia domanda però è:
problemi per la sicurezza? non mi sembra di vederne (ultime parole famose) perchè la sessione e il suo id vengono creati/inseriti da codice, il cookie serve solo per conferma. mi sembra che sia il modo in cui opera anche Joomla!...
perfavore ditemi di si :'(
-
no...
manca l'id dell'utente: aprire una sessione con un id utente non esistente è decisamente pericoloso per l'integrità dei dati. i dati degli utenti sono sincronizzati tra i due db? (un sito per ogni utente?)
io farei così:
1. login sul portale
2. redirect sul sito passando il nome utente e la password (opportunamente allungata e codificata con md5)
3. componente sul sito dell'utente che provveda all'autenticazione tramite
4.1 db utente sincronizzati: lettura del db
4.2 db non sincronizzati: plugin tipo authentication per check remoto.
ciascun sistema si crea le sue sessioni/cookie e possono anche risiedere su server diversi.
ciao,
marco
-
mhm... mi pare un'ottima idea; lavorare con i cookie e cose del genere mi sembrava una cosa "sulle corna alle zanzare" :)
teoricamente la tabella degli utenti del db personale è un sottoinsieme della tabella utenti del db portale.
solo una domanda: passando i dati utente/pwd in md5, come faccio a fare il decript?
grazie mille per il consiglio, vedo di provarlo immediatamente e ti faccio sapere.
mi hai salvato la vita :D
p.s. cmq l'id utente ce lo avrei, però quello che hai detto te è la soluzione più giusta e sicura
ULTIMO EDIT: risolto tutto usando la funzione JApplication->login(). Ancora una volta grazie mille per la dritta, mi stavo infilando in un vicolo cieco :)
-
non c'è il decrypt di un md5: non è simmetrico.
diciamo che il componente di autenticazione è com_authmd5; fai un redirect a
site.tld/index.php?option=com_authmd5&user=pippo&pw=[..md5Hash]
pw è ottenuto, ad esempio, con md5($userName . $password . 'una Chiave comune Ai DuE siTI!');
dall'altra parte farai un look up sulla tabella degli utenti alla ricerca del nome utente passato. prendi la password, la combini con gli altri valori e la compari con l'md5 passato... se coincide autentichi l'utente.
nota: solitamente parte dell'allungamento è una data/ora, in modo che se qualcuno recupera l'autenticazione dalla cache del browser/proxie questa non valga per più di tanto.
ciao,
marco
-
dall'altra parte farai un look up sulla tabella degli utenti alla ricerca del nome utente passato. prendi la password, la combini con gli altri valori e la compari con l'md5 passato... se coincide autentichi l'utente.
ok, perfetto, ma una domanda:
come la faccio l'autenticazione? il metodo JApplication->login richiede le credenziali in chiaro...
c'è un altro modo per fare l'autenticazione?
-
il metodo citato lancia (fire) l'evento onLoginUser che sarà gestito dal citato plugin tipo authentication. ehm: io lo ho indicato solo per il check remoto, ma sicuramente è più conforme allo standard code di joomla anche per una autenticazione locale :P
il metodo prevede dei precisi parametri: il modo in cui essi sono interpretati dipende, ovviamente, dal codice scritto.
ciao,
marco