patryk9200
7.02.2011, 00:34:23
Witam,
Poszukuję przykładów lub podpowiedzi jak zrobić możliwość logowania na takiej zasadzie, że raz logując się np. na stronie xxx.pl to gdy przejdę pod domenę xxx2.pl również automatycznie będę zalogowany jako ten sam użytkownik. Logowanie może się odbywać przez jedną domenę, a dopiero po logowaniu przejść na właściwą. Chodzi mi o coś na wzór logowania
w google oraz Live ID Microsoft'y.
Dodatkowo chciałbym, żeby wtedy te serwisy mogły korzystać z wspólnej sesji.
CuteOne
7.02.2011, 01:22:52
Jeżeli domeny stoją na jednym serwerze to co za problem stworzyć jedną bazę użytkowników dla wszystkich portali? Co do sesji to nie trafiłeś - domena google jest nie zmienna, zmienia się tylko subdomena (połącz konta youtube i google-> zaloguj się na tube i zobacz czy jesteś zalogowany na google).
patryk9200
7.02.2011, 14:56:26
sęk w tym, że są na osobnych serwerach ale korzystają z tej samej bazy użytkowników, a można ustawić jedno ciastko sesyjne dla kilku domen, a samą sesję po prostu wrzucić do bazy danych?
a jak takie sesje są rozwiązane np. w Live ID?
myślę, że zrobię własny menadżer sesji użytkowników który będzie operował na bazie danych w której będę przetrzymywał z serializowane tablice.
Pytanie tylko w jaki sposób identyfikować tego samego użytkownika dla różnych domen?
jak rozwiązać taki problem, że dla bezpieczeństwa po każdym odświeżeniu będę zmieniał identyfikator sesji?
myślałem, żeby rozwiązać to tak, że każda witryna będzie miała dla danej sesji własne ID co mnie zabezpieczy, że po zmianie ID sesji wyloguje mnie z reszty moich portali
czy takie rozwiązanie było by dobre?
Być może bredzę, ale być może tak by dało radę.
Funkcja setcookie() umożliwia ustawienie domeny, dla której to ciastko jest dostępne.
Może więc przy logowaniu na xxx.com ustawiaj dwa ciastka - jedno z domeną xxx.com, drugą z xxx2.com?
tehaha
7.02.2011, 15:34:49
nie możesz ustawiać ciastka dla innych domen
patryk9200
7.02.2011, 15:38:20
wcale nie głupie! faktycznie, zupełnie zapomniałem o tej opcji :-)
pomyśle nad tym jak to zrobić ;-)
w takim razie po co jest ta funkcja? masz może inny pomysł?
w takim razie po co jest ta funkcja, skoro nie można dla innych domen ustawić? masz może inny pomysł? jak to robią np. serwisy reklamowe? w końcu na jakiejś zasadzie identyfikują użytkownika
tehaha
7.02.2011, 15:44:04
a jak Ty to sobie wyobrażasz, że mogę ustawić ciastko dla każdej dowolnej strony? Osobiście jeszcze nie kombinowałem z takim mechanizmem ale musisz trochę poszukać w necie
http://msdn.microsoft.com/en-us/library/bb735305.aspx,
http://stackoverflow.com/questions/342378/...ered-from-one-d//a w odpowiedzi na pytanie po co jest ustawianie domeny w ciastku to możesz sobie ustawić to ciastko np. tylko dla konkretnej subdomy
Tak myślałem, że bredzę

W takim razie próbował bym to zrobić w następujący sposób:
W skrypcie od logowania w domenie xxx.com po udanym logowaniu przekazywał bym dane żądaniem POST do domeny xxx2.com, która to by sama sobie ustawiła swoje ciastko

Czyli tak jakby podwójne logowanie za jednym zamachem
patryk9200
7.02.2011, 15:58:31
dzięki za artykuły :-) już wiem jak robi Microsoft, poprzez przekierowanie, zrobię sobie coś podobnego
tehaha
7.02.2011, 16:04:59
to jeszcze zależy co byś chciał przesyłać tym postem, bo akurat POST to już możesz wysłać do dowolnej strony, w drugim linku, który podałem jest w prosty sposób opisane jak to zrobić ja bym zrobił tak:
w domena1.pl generujesz zalogowanemu użytkownikowi 2 klucze: (hasz), najlepiej na podstawie jego danych i np. micorotime() i jakiejś danej losowej oraz określasz jego ważność np. 1 min, drugi klucz to będzie np. sha1($pierwszy_klucz.$tajny_ciag), na doemena2.pl wysyłasz tylko ten pierwszy klucz za pomocą $_GET przy przekierowaniu, w domena2.pl z otrzymanego klucza generujesz ten drugi klucz czyli przez sha1($pierwszy_klucz.$tajny_ciag), łączysz się z domena1.pl i sprawdzasz czy jest taki klucz jeżeli tak to logujesz użytkownika
POSTem z xxx.com przekazał bym login i hasło do skryptu logowania na xxx2.com
patryk9200
7.02.2011, 17:00:20
Cytat(tehaha @ 7.02.2011, 16:04:59 )

to jeszcze zależy co byś chciał przesyłać tym postem, bo akurat POST to już możesz wysłać do dowolnej strony, w drugim linku, który podałem jest w prosty sposób opisane jak to zrobić ja bym zrobił tak:
w domena1.pl generujesz zalogowanemu użytkownikowi 2 klucze: (hasz), najlepiej na podstawie jego danych i np. micorotime() i jakiejś danej losowej oraz określasz jego ważność np. 1 min, drugi klucz to będzie np. sha1($pierwszy_klucz.$tajny_ciag), na doemena2.pl wysyłasz tylko ten pierwszy klucz za pomocą $_GET przy przekierowaniu, w domena2.pl z otrzymanego klucza generujesz ten drugi klucz czyli przez sha1($pierwszy_klucz.$tajny_ciag), łączysz się z domena1.pl i sprawdzasz czy jest taki klucz jeżeli tak to logujesz użytkownika
myślę, że twój pomysł jest warty rozpatrzenia ;-)
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę
kliknij tutaj.