Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [Symfony] FosUserBundle, brak routingu do logowania
Forum PHP.pl > Forum > PHP > Frameworki
emillo91
Witam. Wczoraj zainstalowałem Bundla FosUserBundle w wersji 2.1.2 oraz według instrukcji ze strony Symfony.com zintegrowałem tegoż bundla z frameworkiem. Problem pojawił się w momencie gdy wpisuję adres 127.0.0.1:8000/login. Panel rejestracji działa i mogę dodawać użytkowników lecz nie ma routingu dla strony logowania i nie wiem gdzie szukać rozwiązania. Błąd jaki się pojawia to:
CODE
No route found for "GET /login/"

natomiast jak wpiszę adres bez slasha na końcu to wyskakuje komunikat:
CODE
AppBundle\Entity\auction object not found.


Wszystko robiłem metodą kopiuj-> wklej z instrukcji symfony. Pliki które konfigurowałem wyglądają tak:
app/AppKernel:
CODE
  1. $bundles = [
  2. new Symfony\Bundle\FrameworkBundle\FrameworkBundle(),
  3. new Symfony\Bundle\SecurityBundle\SecurityBundle(),
  4. new Symfony\Bundle\TwigBundle\TwigBundle(),
  5. new Symfony\Bundle\MonologBundle\MonologBundle(),
  6. new Symfony\Bundle\SwiftmailerBundle\SwiftmailerBundle(),
  7. new Doctrine\Bundle\DoctrineBundle\DoctrineBundle(),
  8. new Sensio\Bundle\FrameworkExtraBundle\SensioFrameworkExtraBundle(),
  9. new FOS\UserBundle\FOSUserBundle(),
  10. new AppBundle\AppBundle(),
  11. ];




app/config/security.yml
CODE
  1. security:
  2. encoders:
  3. FOS\UserBundle\Model\UserInterface: bcrypt
  4.  
  5. role_hierarchy:
  6. ROLE_ADMIN: ROLE_USER
  7. ROLE_SUPER_ADMIN: ROLE_ADMIN
  8.  
  9. providers:
  10. fos_userbundle:
  11. id: fos_user.user_provider.username
  12.  
  13. firewalls:
  14. main:
  15. pattern: ^/
  16. form_login:
  17. provider: fos_userbundle
  18. csrf_token_generator: security.csrf.token_manager
  19.  
  20. logout: true
  21. anonymous: true
  22.  
  23. access_control:
  24. - { path: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY }
  25. - { path: ^/register, role: IS_AUTHENTICATED_ANONYMOUSLY }
  26. - { path: ^/resetting, role: IS_AUTHENTICATED_ANONYMOUSLY }
  27. - { path: ^/admin/, role: ROLE_ADMIN }


app/config/config.yml
CODE
  1. fos_user:
  2. db_driver: orm
  3. firewall_name: main
  4. user_class: AppBundle\Entity\User
  5. from_email:
  6. address: "%mailer_user%"
  7. sender_name: "%mailer_user%"


CODE

  1. app:
  2. resource: '@AppBundle/Controller/'
  3. type: annotation
  4.  
  5. fos_user:
  6. resource: "@FOSUserBundle/Resources/config/routing/all.xml"



Klasy dostępu "User" nie wkleiłem bo nie chodzi o łączenie z bazą danych
ohm
A masz taką klasę jak AppBundle\Entity\auction? Bo coś mi się wydaje że albo masz literówkę, albo nie masz w ogóle.
emillo91
Tak. Klasa "auction" istnieje i jej nazwa zaczyna się od małej litery.
Pyton_000
Wywal tego bundla i zrób sobie logowanie na komponentach symfony. Jest nawet w dokumentacji instrukcja jak to zrobić. FOSUser to straszna kobyła której zdecydowanie nie potrzebujesz.
emillo91
Wiem, że nie potrzebuję ale opieram się o kurs, w którym gościu na podstawie Bundla tłumaczy jak zabezpieczyć stronę przed dostępem do akcji i dalsza część kursu to zabezpieczanie. Może macie pomysł jak mogę zdiagnozować problem? Profiler pokazuje że istnieje routing do "/login". Jeżeli się nie uda to faktycznie zrezygnuję i będę ręcznie wszystko klepać sad.gif
Pyton_000
Jak już chcesz FOS to przeczytaj to https://symfony.com/doc/current/bundles/FOS...ndle/index.html
ohm
Cytat(emillo91 @ 17.05.2018, 20:31:56 ) *
Tak. Klasa "auction" istnieje i jej nazwa zaczyna się od małej litery.

A namespace'y sie zgadzają? Położenia plików? Bo ewidentnie masz jakiś problem z tym auction, bez konkretnych kawałków kodu i danych z profilera ciężko cokolwiek powiedzieć.

A i jeszcze jedna kwestia, z jakiej wersji symfony korzystasz?
PawelC
FOS to za duża kobyła według mnie smile.gif

Zobacz to, oczywiście wybierz swoją wersję SF:
- https://symfony.com/doc/3.4/security/entity_provider.html
- https://symfony.com/doc/3.4/security/form_login_setup.html

I to w zupełności Ci wystarczy do zrobienia autoryzacji, bez pomocy FOS. Wszystko jest dokładnie opisane, więc nie musisz sam za wiele kombinować. I taka drobna uwaga, nazwy klas zaczynaj od dużej litery.
emillo91
Posiadam Symfony 3.3. Jak utworzyłem nowy projekt oparty o symfony 3.4 to wszystko działa. Może namieszałem coś w plikach
PawelC
Możliwe, że coś pomieszałeś biggrin.gif ale na przyszłość napisz sobie własny system autoryzacji na podstawie tego co napisałem smile.gif Sporo się nauczysz na przyszłość.
emillo91
A możliwe, że bundle się ze sobą gryzą? Na razie mam zainstalowane 2 więc jutro zobaczę co jest nie tak. Odnośnie instalacji symfony w wersji 3.4 miałem sytuację, w której brakowało odniesienia do jakiegoś katalogu i musiałem to dopisać ręcznie w pliku config.yml. Może w wersji 3.3, na której się uczę też czegoś brakuje.
PawelC
Ja mam w jednym projekcie 20 bundli i nic się nie gryzie
emillo91
Znalazłem błąd. Miałem źle ustawiony routing . podczas tworzenia akcji mającej na celu pobranie danych z bazy ustawiłem routing na "/{id}" i fosuserbundle próbował pobrać obiekt z nieistniejącej ścieżki. Jak zamieniłem routing do tej akcji na /jakas/akcja/{id} to błąd zniknął. Mam jeszcze pytanie odnośnie mechanizmu routingu Symfony. Czy ten framework odpytuje za każdym razem wszystkie kontrolery żeby dobrać się do danej akcji?
PawelC
Jak masz routing jako adnotacje w kontroelrze to tak. Jak masz w pliku yaml to w nim sprawdzę jaki kontroler odpowiada za dany routing.
ohm
Cytat(emillo91 @ 19.05.2018, 22:54:59 ) *
Czy ten framework odpytuje za każdym razem wszystkie kontrolery żeby dobrać się do danej akcji?


http://davidbu.ch/slides/2015-12-03-symfony-routing.html#14 Luknij na prezentację. W środowisku prod wszystko jest kompilowane i optymalizowane.
https://symfony.com/blog/new-in-symfony-4-1...test-php-router - tu masz zarys nowszej wersji routera.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.