Próbuję zaimplementować funkcję zabezpieczeń w projekcie Symfony 2.1, w którym administrator może utworzyć użytkownika z początkowym hasłem, a następnie, gdy użytkownik loguje się po raz pierwszy, procedura obsługi hasła zmiany jest uruchamiana automatycznie.Jak wymusić zmianę hasła za pomocą FOSUserBundle?
Występują problemy z nadpisaniem klas FOSUserBundle i myślę, że z pewnością jest to już zbudowane, przynajmniej w części, chociaż nie widzę go w dokumentach w dowolnym miejscu.
Chciałbym użyć flagi credentials_expired w encji. Gdy administrator utworzy użytkownika, zostanie on ustawiony na 1. Gdy użytkownik zaloguje się po raz pierwszy, sprawdzane jest credentials_expired, a zamiast zgłaszania wyjątku, zmienione hasło zostaje uruchomione. Dotarłem tak daleko.
ChangePasswordController będzie wtedy upewnić się, że hasło zostało faktycznie zmienione (to nie wydaje się być domyślnym zachowaniem w systemie FOS), a wartość credentials_expired jest ustawiona na 0. To jest, gdzie utknąłem. Jest tak wiele warstw usług, że nie mogę sprawić, że rzeczy będą odpowiednio dostosowane.
Czy mógłbyś być bardziej konkretny? Istnieje wiele sposobów rozwiązania tego problemu. Opublikowanie kodu pomogłoby nam zidentyfikować sposób postępowania. W każdym razie, używanie ról częściej niż flag, może być dobrym pomysłem, ponieważ możesz nim zarządzać za pomocą zapory symfony. W związku z tym osoby z rolą CREDENTIAL_EXPIRED nie mogą uzyskać dostępu do całej sieci i utknęły w formularzu, który zmusza ich do zmiany hasła. – Manu
Kod byłby FOSUserBundle. Rola jest świetnym pomysłem, ponieważ nie wymagałaby rozszerzania klas. Dam ci ten strzał. Dzięki. – David