Tomasz Faszyński

Tomasz Faszyński Specjalista ds.
programowania

Temat: Symfony 3 - autentykacja

Próbuję zrobić logowanie użytkowników zgodnie z opisem http://symfony.com/doc/current/cookbook/security/entit...

Niestety nijak mi to nie idzie.

Entity User.php mam zrobione jak w przykładzie. Tak samo baze danych. Próbowałem hasła trzymać jako bcrypt, md5 oraz plaintext i nic nie działa.

Plik security.yml


security:
encoders:
AppBundle\Entity\User: plaintext

role_hierarchy:
ROLE_ADMIN: [ROLE_USER]

providers:
our_db_provider:
entity: { class: AppBundle:User, property: username }

firewalls:
main:
pattern: ^/
anonymous: ~
provider: our_db_provider

form_login:
login_path: /
check_path: /
logout:
path: /logout
target: /

access_control:
- { path: ^/admin, roles: ROLE_ADMIN }




W formularzu przekazuję zmienne jako _username oraz _password czyli zgodnie z dokumentacją.

Kontroler do obsługi:


public function indexAction(Request $request)
{
$session = $request->getSession();

$authenticationUtils = $this->get('security.authentication_utils');

$error = $authenticationUtils->getLastAuthenticationError();

$lastUsername = $authenticationUtils->getLastUsername();

if ($this->get('security.authorization_checker')->isGranted('ROLE_ADMIN')){
return $this->redirect($this->generateUrl('admin_dashboard'));
}

return $this->render('default/index.html.twig', [
'base_dir' => realpath($this->getParameter('kernel.root_dir').'/..'),
'body_id' => "simple-page",
'last_username' => $lastUsername,
'error' => $error
]);
}


Jak podam błędne dane do logowania to otrzymuję
exception 'Symfony\Component\Security\Core\Exception\BadCredentialsException' with message 'Bad credentials.' 


Jak podam poprawne to nie przekierowuje mnie do admin_dashboard i nie zwraca żadnego błędu. W debugu dalej jestem jako anonymous

W bazie mam rolę ROLE_ADMIN i takie też mam w getRoles zwracane w entity User.

Co jest nie tak?
Marcin Gólcz

Marcin Gólcz golczdesign.pl

Temat: Symfony 3 - autentykacja

Spróbuj dodać do
form_login
to:

target_path_parameter: redirect_url

konto usunięte

Temat: Symfony 3 - autentykacja

Jako że nie dałeś zbyt dużo informacji to mogę tylko robić sugestie. Zauważyłem że masz tą samą ścieżkę do logowania i do sprawdzania. Otóż o ile mnie pamięć nie myli, login_check musi być ZA firewallem. Tzn wymagać uprawnień dostępu. Bez tego nie będzie banglać.
Robert P.

Robert P. Senior PHP Developer

Temat: Symfony 3 - autentykacja

Zobacz sobie na http://symfony.com/doc/current/cookbook/security/form_...

Pierwszy błąd, który rzuca się w oczy to ten, o którym napisał Darek. login_check musi być za firewallem.

Możesz wrzucić co zwraca Ci komenda?

php bin/console debug:route

Dlaczego twój login path to login_path i check path to /?

Następna dyskusja:

symfony a middleware




Wyślij zaproszenie do