- Szycy
- 22 sierpnia 2026 21:47 UTC
- Autor
- Kamo
- Pochęt się
- 0fc3aff
Nic w SecurityService nigdy nie napisało użytkowników.last_login. Pisanie żyło W emerytowanym AuthenticationService i nie został przeniesiony, gdy Uwierzytelnianie przeniesione do JDBC UserAuthenticationService, która czyta I nigdy nie pisze. Kolumna była więc NULL dla każdego użytkownika i każdego Powierzchnia pokazująca go "Never": /koncie i siatki członków zespołu, Układ nagłówka profilu użytkownika oraz zakładka Login & Security. Nic nie popełniło błędu Wszędzie, ponieważ każda warstwa zachowuje się prawidłowo dla null. Umieść go, gdy klucz jednorazowy jest wybity, a nie tam, gdzie jest hasło Sprawdzone. OTK jest tym, co faktycznie przekazuje sesję przeglądarce, więc Logowanie, które zatrzymuje się przy drugim czynniku, okazało się hasłem, a nie Identyfikacja i nie pozostawia śladu, dopóki czynnik nie zostanie osiągnięty. Podszywanie się i wejście celowo nie stemplują: ci miętają sesję Administrator prowadzi, a nagrywanie go, ponieważ własne logowanie członka oznaczałoby Logowanie, którego nigdy nie wykonali na powierzchni audytu. /device/exchange is a Odświeżanie totona tła, które również obsługuje przełączanie org, więc stemplowanie go Zamień wartość na "ostatni raz telefonicznie do domu". Wartość to LocalDateTime.toString() w UTC skrócony do milisekund, Bezkompensowa aplikacja kształtowa/lib/serverTime.ts już analizuje; strona internetowa nie wymaga Zmiana. Efekt boczny warty poznania: to sprawia, że brama zastępcza w SecurityController Prawdziwe. Testuje "nigdy nie zweryfikowano i nigdy się nie zalogowano", a z last_loginem zawsze NULL druga klauzula zawsze była prawdziwa, degenerując czek na !mailVerified sam. Istniejące rzędy pozostają NULL, dopóki każdy użytkownik nie zarejestruje się. Logowanie nigdy nie było Nagrane, więc nie ma od czego się zasypać.