Sesje użytkowników

0

Pytanie jest takie. Czy sesję użytkowników należy przechowywać także w bazie danych?

0

Sesji użytkownika nie należy przechowywać w bazie danych. :)

0

Samo z siebie przechowywanie sesji użytkownika w bazie danych nie ma sensu, więc nasuwa się pytanie: po co chcesz przechowywać ją w bazie?

0

A na przykład do sprawdzenia czy dany użytkownik jest aktualnie zalogowany i wyświetlenie listy zalogowanych użytkowników? To nie potrzeba do tego zapisywać w bazie sesji? Jak takie coś zrobić?

0

Nie, nie trzeba. Wystarczy zapisać gdzieś czas ostatniej aktywności użytkownika i jeśli upłynęło np. 5 minut to można uznać, że użytkownik sobie poszedł. Można też uwzględnić, że użytkownik kliknął przycisk / odnośnik wylogowania, w tedy po prostu usuwa się wpis, o aktywności użytkownika lub ustawia 'zerową' datę.

0

Sesja to zwykle jakiś cache, który pod kluczem z JSESSION_ID przechowuje dane które chcesz. Jest to automatycznie zarządzane, klucze wygasają po jakimś czasie i nic nie jest zapisywane na stałe, bo nie ma czegoś takiego jak permanentne zalogowanie. Dlatego sesja to cache, a baza to baza. Nie należy tego mieszać.

0

Zrobienie, żeby sesja była w bazie przynajmniej w php to banał ;) Zresztą takie systemy jak chociażby drupal trzymają sesje w bazie a nie w plikach :)

5

Jeżeli domyślna i wbudowana implementacja sesji w twoim oprogramowaniu wystarcza to nie wymyślaj własnej.

Ta zintegrowana obsługa sesji jest z reguły bardzo prosta: ciastko identyfikujące oraz powiązane dane przechowywane w plikach tymczasowych (PHP) czy bezpośrednio w pamięci (ASP.NET), które są po jakimś czasie usuwane. Ale takie rozwiązanie może okazać się niewystarczające i wtedy faktycznie trzeba wspomóc ją dodatkowo (albo kompletnie zastąpić) bazą danych (czy innym mechanizmem przechowywania jej). Może się to okazać konieczne gdy web-workerów (serwerów obsługujących zapytania) jest więcej i nie chcemy łączyć sesji z tylko jednym z nich (bo może to powodować problemy wydajnościowe) albo gdy sesja musi być współdzielona pomiędzy wieloma usługami (czyli nie tylko cross web-worker).

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