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 :
/** * @Route("valuation/admin/login", name="admin_login") * @Template() */ public function loginAction() { if ($this->get('request')->attributes->has(SecurityContext::AUTHENTICATION_ERROR)) { $error = $this->get('request')->attributes->get(SecurityContext::AUTHENTICATION_ERROR); } else { $error = $this->get('request')->getSession()->get(SecurityContext::AUTHENTICATION_ERROR); } 'last_username' => $this->get('request')->getSession()->get(SecurityContext::LAST_USERNAME), 'error' => $error, ); } /** * @Route("valuation/admin/login_check", name="_security_check") */ public function securityCheckAction() { // The security layer will intercept this request } /** * @Route("valuation/admin/logout", name="_demo_logout") */ public function logoutAction() { // The security layer will intercept this request }
oraz taką linijkę na początek :
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
security: encoders: Symfony\Component\Security\Core\User\User: plaintext role_hierarchy: ROLE_ADMIN: ROLE_USER ROLE_SUPER_ADMIN: [ROLE_USER, ROLE_ADMIN, ROLE_ALLOWED_TO_SWITCH] providers: in_memory: users: user: { password: userpass, roles: [ 'ROLE_USER' ] } admin: { password: adminpass, roles: [ 'ROLE_ADMIN' ] } firewalls: dev: pattern: ^/(_(profiler|wdt)|css|images|js)/ security: false login: pattern: ^valuation/admin/login$ security: false secured_area: pattern: ^/valuation/admin/ form_login: check_path: valuation/admin/login_check login_path: valuation/admin/login logout: path: valuation/admin/logout target: valuation/ #anonymous: ~ #http_basic: # realm: "Secured Demo Area" access_control: #- { path: ^/login, roles: IS_AUTHENTICATED_ANONYMOUSLY, requires_channel: https } #- { 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
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 ?