2011-07-05 14 views
7

Po trudach przez cały dzień z prostym zadaniem dla Symfony 2 bez powodzenia, postanowiłem poprosić was o rozwiązanie.Nie ma użytkownika dla użytkownika "Symfony Komponent Bezpieczeństwo Rdzeń Użytkownik Użytkownik"

Oto problem: chciałbym uczynić uwierzytelnianie http_basic za pomocą doktryny, więc użytkownicy byliby proszeni o podanie nazwy użytkownika/hasła, które są przechowywane w bazie danych.

Tak, a następnie kroki:

1) utworzony nowy podmiot o nazwie użytkownika z interaktywnym generatorze konsoli.

Jak to wygląda:

http://pastebin.com/3RzrwFzL

2) Jak stwierdzono w dokumentacji I wprowadziły userinterface i dodaje 4 metody brakujące. Teraz jednostka wygląda tak:

http://pastebin.com/Epw3YrwR

3) Mam zmodyfikowano security.yml tak mało, jak to możliwe, aby to działało, i wygląda tak:

http://pastebin.com/tp6Gd7t7

I wyczyściłem pamięć podręczną i próbowałem uzyskać dostęp do app_dev.php/admin i oczywiście pojawia się ten sam błąd przez cały dzień:

Brak użytkownika dla użytkownika "Symfony \ Component \ Security \ Core \ User \ User ".

500 Internal Server Error - RuntimeException

Czy ktoś może mi powiedzieć, gdzie jest problem? Próbowałem tego tysiąc różnych sposobów i dziwnie to działało przez chwilę, ale kiedy próbowałem dodać sha1 jako algorytm kodera zamiast zwykłego tekstu i wyczyściłem pamięć podręczną, wróciłem do tego samego błędu .. od tego czasu nie dostaję nic innego ale to. To jest tak, jakby była ukryta pamięć podręczna, która jest wymazywana za każdym razem, gdy Symfony decyduje: D

Myślę, że błąd może być również w 4 metodach podmiotu, ale nie mogę ich naprawić, ponieważ nie ma dokumentacji o tym, co powinno oni to robią.

Obecnie korzystam z RC4.

Z góry dziękuję, mam nadzieję, że ktoś Ci pomoże.

Odpowiedz

4

Miał ten sam problem. Wygląda na to, że to działa. Będę go używał tylko w procesie rozwoju, później znajdę rozwiązanie.!

security: 
    role_hierarchy: 
     ROLE_ADMIN:  ROLE_USER 
     ROLE_SUPER_ADMIN: [ROLE_USER, ROLE_ADMIN, ROLE_ALLOWED_TO_SWITCH] 


    providers: 
     chain_provider: 
      providers: [in_memory, user_db] 
     in_memory: 
      users: 
       cheese: { password: olo, roles: ROLE_ADMIN } 
     user_db: 
      entity: { class: Abc\BaseBundle\Entity\User, property: username } 


    encoders: 
     Symfony\Component\Security\Core\User\User: plaintext 
     Abc\BaseBundle\Entity\User: plaintext 

    firewalls: 
     dev: 
      pattern: ^/(_(profiler|wdt)|css|images|js)/ 
      security: false 

     panel: 
      pattern: ^/(panel|login_check) 
      anonymous: ~ 
      form_login: 
       login_path: /login 
       check_path: /login_check 
       default_target_path: /panel/ 
      logout: 
       path: /logout 
       target:/
0

Można oszczędzić sobie bólu głowy i spróbować znajomych symfony UserBundle.

Przynajmniej patrząc na ten pakiet pomoże ci nauczyć się i naprawić swój kod. Ma mnóstwo dobrze napisanego kodu/przykładów.

+0

Aby być uczciwym, zrobiliśmy świetną pracę z FOSUserBundle, ale może to spowodować inne bóle głowy, jeśli wolisz albo szczupłe, albo wysoce konfigurowalne rozwiązanie. – David

8

Raz miałem ten problem.

To dlatego, że zalogowałem się do użytkownika z poprzedniego dostawcy (in_memory).Musiał przywrócić część in_memory, wylogować się, a następnie umieścić nowego dostawcę.

Zgaduję:

informacji od użytkownika był na sesji i nie może acces to od wzięliśmy go z security.yml

+1

Dobra, zawsze czysta pamięć podręczna. –

+0

+1 Czyszczenie pamięci podręcznej naprawia to – Jonathan

+0

Co zrobić, jeśli pamięć podręczna jest czysta i nadal występuje błąd? Używam tego samego problemu po próbie uzyskania tego (https://knpuniversity.com/screencast/guard/api-token) pracy, jakiejkolwiek porady? Utknąłem – ReynierPM

0

dla mnie problemu wystąpił w środowisku dev. Stało się tak, ponieważ mam aktywną sesję z innego projektu.

Pomagały czyszczenie ciasteczek przeglądarki.

+0

Tak, aby wyczyścić ciasteczka przeglądarki pomógł mi też! Thks – mario

Powiązane problemy