Wpis z mikrobloga

Cześć wszystkim.
Kilka dni temu pytalem na mikro, dlaczego robiąc funkcję remember me, nie jest generowane ciasteczko. Otóż sytuację z ciasteczkiem dało się rozwiązać. Już się generuje. Problem jest teraz inny, jeżeli wywalam ciasteczko PHPSESSID, a REMEMBERME nadal jest ważne, to użytkownik zostaje wylogowany. Czyli wychodzi na to, że #symfony2 nie sprawdza czy jest ciasteczko REMEMBERME, a użytkownik jest zalogowany tylko tyle czasu ile sesja jest aktywna. W jaki sposób zmusić #sf2, aby nie wylogowało użytkownika po zakończeniu sesji,a dopiero gdy ciasteczko REMEMBERME przestanie być ważne?

Załączam też gista z formularzem, ustawieniami security.yml i SecurityController.php (liniki 57-70), w którym to generuję ciastko rememberme.
https://gist.github.com/miedzwin/6c84a5cceac376423ed8

Z symfony pracuję dopiero od kilku miesięcy, więc proszę o wyrozumiałość, dopiero się uczę…

#php #webdev #webdevhelp
  • 11
  • Odpowiedz
@kmicolo: chodzi mi o to, że domyślnie jest ustawiane ciasteczko PHPSESSID, które jest ważne dopóki żywa jest sesja. Kiedy wygasa żywotność sesji, użytkownik zostaje wylogowany, przy okazji wygasa ważność ciasteczka.
Dodając opcję remember me, ustawiamy czas ważności ciasteczka na dzień/tydzień/miesiąc i podczas logowania użytkownik otrzymuje 2 ciasteczka: PHPSESSID i REMEMBERME. Teraz ma to działać tak, że użytkownik nie zostanie wylogowany, zanim ciasteczko REMEMBERME jest ważne. Jak rozumiem jeżeli ciasteczko PHPSESSID traci
  • Odpowiedz
@mariecziek: tak jak @jurigag mówi - skąd serwer ma wiedzieć jakiej sesji dotyczy remember me? Ma uwierzyć klientowi na słowo że trzyma ciasteczko więc w ciemno logować usera bez sprawdzania hasła? A może chcesz zapisać w ciastku hasło? A wiesz co to kradzież ciasteczka? Wtedy jeden xss, kradnę użytkownikowi ciasteczko i mogę logować się na jego konto. Mam rację czy nie?
  • Odpowiedz
@kmicolo: @Jurigag: Dobra, zrozumiałem swój błąd w rozumowaniu, ale to nie zmienia faktu, że jak ciastko PHPSESSID wygaśnie, to użytkownik zostaje wylogowany ze strony. Minęły już 3 dni i nie raz musiałem się logować, mimo że ciastko remember me musiało nie pozwolić mi się wylogować przez miesiąc.
Tak więc nadal gdzieś tkwi błąd w moim kodzie, z powodu którego framework nie zwraca uwagi jest ciastko remember me ustawione czy nie.
  • Odpowiedz
Widzisz, mam 2 ciasteczka. Jedno to PHPSESSID, które jest ważne dopóki nie skończy się sesja, a drugie to REMEMBERME, które wygasa za miesiąc.
Nie wiem czy poprawnie rozumiem jak działa remember me, ale moim zdaniem ma być tak:
a) 'remember me' jest odznaczone = jestem zalogowany póki trwa sesja (wylogowuje mnie, jak PHPSESSID traci ważność).
b) 'remember me' jest zaznaczone = jestem zalogowany, póki ciasteczko REMEMBERME jest ważne.

Jeżeli wszystko zależy od
mariecziek - Widzisz, mam 2 ciasteczka. Jedno to PHPSESSID, które jest ważne dopóki n...

źródło: comment_yYgvAzI4qic2ZVT4jlB2HLiEw2x6WxkS.jpg

Pobierz
  • Odpowiedz