2009-10-15 11 views
13

Mam zgłoszenia i skargi od mojego użytkownika, że ​​będą używać ekranu i zostaną wyrzuceni z powrotem na ekran logowania natychmiast po ich kolejnej prośbie. Nie zdarza się to cały czas, ale losowo.Sesja CakePHP/autowy wylogowywanie z przerwami

Używam CakePHP i komponent Auth, które wydają się działać dobrze inny niż ten problem

Mam pewne informacje zwrotne na forach Ciasto kiedyś, że to jest czasami spowodowany przez 404 wniosek, że resetuje sesję, czyli jeśli masz uszkodzony link do obrazu lub brakujący plik favicon. Mam otwarty firebug i nie ma żadnych nieudanych próśb, więc wykluczyłem to jako możliwość, ale użytkownik jest sporadycznie wylogowywany. Wydaje się, że ma to miejsce w różnych przeglądarkach i systemach operacyjnych.

Poniżej znajduje się podsumowanie moich ustawień config: Security.level = wysoki Session.Timeout = 1200 // oznacza to mój rzeczywisty czas oczekiwania powinien być 12.000 sekund Session.save = php

Jestem naprawdę w Utrata tego, co powoduje ten problem ...

Odpowiedz

9

Mam też problem z moim ustawieniem bezpieczeństwa na wysokim poziomie. Kiedy ustawisz go na wysoki, regeneruje sesję na każde żądanie: "Identyfikatory sesji CakePHP są również regenerowane między żądaniami, jeśli" Security.level "jest ustawione na" high "."

Miałem ten problem również w różnych przeglądarkach, więc wiem, że nie jest to najlepsze rozwiązanie, ale zmieniłem ustawienie zabezpieczeń na medium i zmieniłem limit czasu sesji, aby odzwierciedlić to ustawienie i od tego czasu nie miałem żadnych problemów.

+0

dzięki, dam ci szansę – croixhaug

+0

Jesteś ratownikiem. – Dirk

+0

Dzięki! Jeszcze 8 ... – Justin

0

Sprawdź swój Auth->allow lub ->deny, ponieważ może to być, że użytkownik uzyskuje dostęp do ograniczonej części lub działania kontrolera (ów).

Po drugie, sprawdź swoją konkretną wersję Sanitize CakePHP, ponieważ opcje "wysokiego bezpieczeństwa" często powodują problemy.

404 stron zresetować sesję? Nigdy o tym nie słyszałem.

Myślę, że twój problem znajduje się gdzieś w procedurach uwierzytelniania. Jeśli ograniczysz zbyt wiele rzeczy, może się zdarzyć, że niektóre konstelacje żądań zakończą się niepowodzeniem ze względu na brakujące atrybuty.

Na przykład: UserOne próbuje uzyskać dostęp do Twojej witryny, jego nazwa użytkownika zawiera ciągi znaków, które powodują błędną interpretację nazwy użytkownika. Nazwę można znaleźć w bazie danych, ale uwierzytelnienie nie może powiązać jej z żądaniem.

Błędy takie jak ten zawsze ukrywają się w kodzie, w którym się nie spodziewałeś.

+0

Przepraszam, prawdopodobnie potrzebowałem określić dalej .. proces logowania użytkownika z Auth jest w porządku. Kiedy próbuję uzyskać dostęp do/admin/urls, mam to ustawione, aby wymagać autoryzacji, i robi to dla poprawnych ekranów. Zalogowanie się nie stanowi problemu, znajduje nazwy w bazie danych, ale problem polega na tym, że sporadycznie wyrzucą mnie, gdy już się znajdę. – croixhaug

+0

Prawdopodobnie żądanie 404 może zresetować Cake Auth/Session, a nie ogólny problem PHP – croixhaug

+0

Spróbuj ponownie skonfigurować program cakephp, w tym bazę danych (itp.), Co może pomóc. –

0

Security.level on high zrobi to. ustawić go na medium w core.php

1

Miałem podobny problem, stwierdziłem, że jest to sprawdzanie user_agent w pliku core.php, ustaw to na false!

Co się działo po odświeżeniu strony identyfikator sesji został zmieniony i zostałem wylogowany, ale w obiekcie Session wystąpił błąd polegający na próbie przejęcia kontroli nad sesją !!! pr ($ this-> Session);

Ustaw dla false w core.php! Configure :: write ('Session.checkAgent ", false);

+0

wielkie dzięki za to. ) // skonfigurować :: write ('sesja', array ( 'defaults' => 'baza', 'checkAgent', fałszywe, 'handler' => array ( 'model' => 'cake_sessions' "timeout" => 480 // 8 godzin )); –