Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [Symfony] in-memory - logowanie
peter13135
post
Post #1





Grupa: Zarejestrowani
Postów: 1 447
Pomógł: 191
Dołączył: 26.03.2008

Ostrzeżenie: (0%)
-----


Chcę zrobić logowanie, takie jak w "acme demo", czyli z ustalonymi w konfiguracji adminami.

Niby cały kod mam i wszystko działa... ale jak chcę przenieść to na moje potrzeby, to mi nie wychodzi.

Napiszę co po kolei robiłem :

1. Do swojego kontrolera dodałem 3 metody :
  1.  
  2. /**
  3.   * @Route("valuation/admin/login", name="admin_login")
  4.   * @Template()
  5.   */
  6. public function loginAction()
  7. {
  8. if ($this->get('request')->attributes->has(SecurityContext::AUTHENTICATION_ERROR)) {
  9. $error = $this->get('request')->attributes->get(SecurityContext::AUTHENTICATION_ERROR);
  10. } else {
  11.  
  12. $error = $this->get('request')->getSession()->get(SecurityContext::AUTHENTICATION_ERROR);
  13. }
  14.  
  15. return array(
  16. 'last_username' => $this->get('request')->getSession()->get(SecurityContext::LAST_USERNAME),
  17. 'error' => $error,
  18. );
  19. }
  20.  
  21. /**
  22.   * @Route("valuation/admin/login_check", name="_security_check")
  23.   */
  24. public function securityCheckAction()
  25. {
  26. // The security layer will intercept this request
  27. }
  28.  
  29. /**
  30.   * @Route("valuation/admin/logout", name="_demo_logout")
  31.   */
  32. public function logoutAction()
  33. {
  34. // The security layer will intercept this request
  35. }

oraz taką linijkę na początek :
  1. use JMS\SecurityExtraBundle\Annotation\Secure;


Są one skopiowane z przykładu Acme

2.Skopiowałem templatke login.html.twig do swojego bundla
3. Nieco zmodyfikowałem plik security.yml
  1. security:
  2. encoders:
  3. Symfony\Component\Security\Core\User\User: plaintext
  4.  
  5. role_hierarchy:
  6. ROLE_ADMIN: ROLE_USER
  7. ROLE_SUPER_ADMIN: [ROLE_USER, ROLE_ADMIN, ROLE_ALLOWED_TO_SWITCH]
  8.  
  9. providers:
  10. in_memory:
  11. users:
  12. user: { password: userpass, roles: [ 'ROLE_USER' ] }
  13. admin: { password: adminpass, roles: [ 'ROLE_ADMIN' ] }
  14.  
  15. firewalls:
  16. dev:
  17. pattern: ^/(_(profiler|wdt)|css|images|js)/
  18. security: false
  19.  
  20. login:
  21. pattern: ^valuation/admin/login$
  22. security: false
  23.  
  24. secured_area:
  25. pattern: ^/valuation/admin/
  26. form_login:
  27. check_path: valuation/admin/login_check
  28. login_path: valuation/admin/login
  29. logout:
  30. path: valuation/admin/logout
  31. target: valuation/
  32. #anonymous: ~
  33. #http_basic:
  34. # realm: "Secured Demo Area"
  35.  
  36. access_control:
  37. #- { path: ^/login, roles: IS_AUTHENTICATED_ANONYMOUSLY, requires_channel: https }
  38. #- { path: ^/_internal, roles: IS_AUTHENTICATED_ANONYMOUSLY, ip: 127.0.0.1 }



I to by było na tyle.

Wchodzę sobie do
Kod
valuation/admin/login


Formularz się wyświetla. Wpisuje dane, wysyłam i przenosi mnie do
Kod
valuation/admin/login_check

gdzie wyświetla się :
Kod
he controller must return a response (null given). Did you forget to add a return statement somewhere in your controller?
500 Internal Server Error - LogicException


Błąd jest zrozumiały, bo mój kontroler faktycznie nie zwraca wartości... ale podobno jakiś "security layer" ma to "obejść" i mimo to mnie zalogować.


Czy mogę prosić o podpowiedź gdzie znajduje się błąd ?


--------------------
:)
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 21.08.2025 - 13:55