Stan zalogowania się

0

Posiadam przeglądarki Firefox i Internet Explorer, obie w najnowszej wersji.

Zauważyłem, że w tych dwóch przeglądarkach jest taki problem, że jak się otworzy tą samą stronę w dwóch kartach lub dwóch oknach, to nie da się tak zrobić, że jak się na jednej karcie zaloguję na jedno konto, a na drugiej karcie na drugie konto lub na tej drugiej karcie będę niezalogowany. Innymi słowy, otwieram Allegro na dwóch kartach, w obu jestem niezalogowany, na pierwszej karcie loguję się na swoje konto, przechodzę na drugą kartę, wciskam F5 i również tam jestem zalogowany. Innych przeglądarek pod tym względem nie sprawdzałem. Czy ktoś testował to w Chrome, Safari i Operze?

Natomiast można tak zrobić, że w IE będę zalogowany na jednym koncie, a w Firefoxie na drugim koncie (bądź niezalogowany) i wszystko działa.

Rozumiem, że serwer widzi mnie, jako "użytkownik o adresie IP nr A.B.C.D". Natomiast jak to jest z tym zalogowaniem się? Po teście z dwoma przeglądarkami wnioskuję, że informacja, że jestem zalogowany na stronie musi być po stronie przeglądarki, bo gdyby było inaczej, to po zalogowaniu się w FF i wciśnięciu F5 w IE, również w IE by się zalogował.

Rozumiem, że czasem wspólny stan dotyczący logowania jest pożądany dla wszystkich kart z daną stroną, ale nieraz przydałoby się, żeby móc operować na kilku kontach naraz. Czy da się przeglądarkę tak, żeby dało się pracować na dwóch kontach?

0

Użyj tzw. trybu porno :) już chyba wszystkie nowsze przeglądarki to obsługują. W operze: Menu->Karty i okna->Nowa karta prywatna, w chrome to jest nazwane Nowa karta incognito. A w innych sobie poszukaj...

0
madmike napisał(a)

Użyj tzw. trybu porno :) już chyba wszystkie nowsze przeglądarki to obsługują. W operze: Menu->Karty i okna->Nowa karta prywatna, w chrome to jest nazwane Nowa karta incognito. A w innych sobie poszukaj...

W Firefox jest też taki tryb, od działa tak, że zamyka to, co jest otwarte i otwiera się nowe karty. W czasie trybu prywatnego we wszystkich kartach otwartych w tym trybie jest również wspólny stan zalogowania tak samo, jak w zwykłym trybie.

2
Bilski napisał(a)

Rozumiem, że serwer widzi mnie, jako "użytkownik o adresie IP nr A.B.C.D". Natomiast jak to jest z tym zalogowaniem się? Po teście z dwoma przeglądarkami wnioskuję, że informacja, że jestem zalogowany na stronie musi być po stronie przeglądarki, bo gdyby było inaczej, to po zalogowaniu się w FF i wciśnięciu F5 w IE, również w IE by się zalogował.

w przeglądarce wystawianie jest ciasteczko z identyfikatorem sesji, ciasteczko nie jest per karta/zakładka, tylko per przeglądarka, dlatego w innych kartach także jesteś zalogowany, ale w innej przeglądarce nie

Bilski napisał(a)

Rozumiem, że czasem wspólny stan dotyczący logowania jest pożądany dla wszystkich kart z daną stroną, ale nieraz przydałoby się, żeby móc operować na kilku kontach naraz. Czy da się przeglądarkę tak, żeby dało się pracować na dwóch kontach?

w Operze nie występuje ten problem, tzn. karty prywatne są "odseparowane" od pozostałych
po zamknięciu karty prywatnej w Operze nie logują się ani ciasteczka, ani historia, wszystko jest czyszczone, oczywiście może to być jednka nie do końca porządane, ale to już możesz wypraktykować

0
massther napisał(a)
Bilski napisał(a)

Rozumiem, że serwer widzi mnie, jako "użytkownik o adresie IP nr A.B.C.D". Natomiast jak to jest z tym zalogowaniem się? Po teście z dwoma przeglądarkami wnioskuję, że informacja, że jestem zalogowany na stronie musi być po stronie przeglądarki, bo gdyby było inaczej, to po zalogowaniu się w FF i wciśnięciu F5 w IE, również w IE by się zalogował.

w przeglądarce wystawianie jest ciasteczko z identyfikatorem sesji, ciasteczko nie jest per karta/zakładka, tylko per przeglądarka, dlatego w innych kartach także jesteś zalogowany, ale w innej przeglądarce nie

Wydaje mi się, że to jest trochę bez sensu. Z tego, co się orientuję, już protokół TCP/IP zapewnia identyfikację urządzeń końcowych tak, że nie trzeba jakiś nowych identyfikatorów, żeby serwer "wiedział" kim jest klient, skąd otrzymuje dane, jak wysłać dane. Np. przy połączeniu FTP nie ma ciasteczek, a serwer i tak "wie", kto się podłączył i czy i na jakie dane się zalogował i nie ma problemu z logowaniem się na dwa konta naraz z tego samego IP.

A jak jest sklep internetowy, to czy aktualna zawartość koszyka też jest w ciasteczkach?

Jeżeli tak, to samo podejście, że aplikacja, która wykonuje się na serwerze przechowywała zmienne po stronie klienta, jakby nie mogła przechowywać tych danych u siebie wydaje się bez sensu, wtedy każdy odczyt i zapis zmiennej powoduje ruch w sieci. Czy dobrze rozumiem?

0

To nie jest kwestia TCP/IP tylko HTTP, który jest bezstanowy. Wysyłasz żądanie do serwera, on je przetwarza i wysyła Tobie odpowiedź, po czym zapomina o Tobie. Ciasteczka służą do obejścia tego problemu. Po zalogowaniu zapisywane jest na Twoim dysku ciasteczko z numerem Twojej sesji, które jest potem sprawdzane w trakcie Twojego korzystania ze sklepu czy innej strony. Na podstawie wartości tego ciasteczka serwer może Cię zindentyfikować i wiedzieć co jest w Twoim koszyku.

0

Mi też niektóre rzeczy wydawały się dziwne, źle zaprojektowane etc. ale większość takich protokołów projektowali ludzi mądrzejsi od ciebie, ode mnie. Czasem pojawia się małe ale, jak w przypadku http. Oczywiście w czasach kiedy był on projektowany bezstanowość była ok, bo pomyślany był on do udostępniania treści (najczęściej tekstowych) wielu użytkownikom. Późniejszy bum internetowy pewnie zaskoczył niektórych ludzi w branży, a rozwój standardów nie nadążał za rynkiem (kolejny genialny przykład to html, którego ostatnia ustandaryzowana wersja ma ponad dekadę!). Generalnie pewnie można by napisać kilka prac doktorskich na temat takiej a nie innej architektury http i tego czy należałoby jakoś wzbogacić go o stanowość. Póki co http jest bezstanowy (i raczej tak pozostanie), a ciasteczka są skutecznym sposobem omijania tego problemu.
Jeśli chodzi o sklepy internetowe etc. to oczywiście że wszelkie dane trzymane są po stronie serwera, a jedynie w ciasteczku w przeglądarce składowny jest identyfikator sesji, po którym sklep identyfikuje sesję użytkownika, a w niej zapisany koszyk zakupów i inne dane.

0

Czy ja dobrze rozumiem (w dużym uproszczeniu):

W momencie, jak wpisuję www.allegro.pl w pasku adresu i naciskam enter, to przeglądarka (po zdobyciu IP odpowiadającego domenie www.allegro.pl) nawiązuje łączność z serwerem, żąda zawartości strony głównej, wczytuje ją i się rozłącza.

Jak potem kliknę "Moje Allegro", to przeglądarka nawiązuje kolejne połączenie, wczytuje stronę i rozłącza się.

Wpisuję login i hasło, jak kliknę "zaloguj", to znowu przeglądarka nawiązuje łączność, generuje ciasteczko, żąda strony z listą moich transakcji i rozłącza się.

Czy tak to rzeczywiście działa?

A każde wciśnięcie F5, to przeglądarka się łączy, pobiera treść i rozłącza.

Natomiast na takich stronach, jak http://10minutemail.com nie potrzeba wciskać F5, żeby odebrać wiadomość, tylko sama się pokazuje, jak dotrze na skrzynkę, podobnie jest w Gmailu. Czy to znaczy, ze na stronie jest Javascript, który automatycznie żąda określonej treści co jakiś czas (np. co 15 sekund)?

0

Są połączenia Keep-Alive, ale sobie wyobraź sobie o ile większe by było obciążenie serwera gdyby HTTP zawsze polegał na stałym połączeniu, przy serwisie typu Allegro czy Google zeżarłoby znacznie więcej zasobów na podtrzymywanie tych połączeń niż teraz. I to jest plus tego systemu.

To że na 10minutemail masz automatyczne aktualizowanie treści strony to zasługa AJAXa, wykonuje on takie same połączenia z serwerem, tylko asynchronicznie bez wiedzy użytkownika jako-tako (są one z tego tytułu ograniczone tylko do domeny z której zostały wywołane).

1 użytkowników online, w tym zalogowanych: 0, gości: 1