• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Symfony 5.4 SecurityBundle, nie można sie zalogować po rejestacji.

Object Storage Arubacloud
0 głosów
143 wizyt
pytanie zadane 24 lutego 2022 w PHP przez Piotr Zakrzewski Obywatel (1,260 p.)

Zbudowalem pusty projekt Symfony w wersji 5.4 wg dokumentacji,  nizej wrzucam komendy jakie odpalam do wygenerowania projektu

composer create-project symfony/skeleton:"^5.4" testapp54 &&
cd testapp54 &&
composer require webapp &&
composer require symfony/apache-pack &&
composer require symfonycasts/verify-email-bundle &&
composer require symfony/security-bundle &&
composer require symfonycasts/reset-password-bundle &&
php bin/console make:controller MainController &&
php bin/console make:user &&
php bin/console make:auth &&
php bin/console make:registration &&
php bin/console make:reset-password &&
php bin/console make:migration &&
php bin/console doctrine:migrations:migrate

Po instalacji i konfiguracji, przechodzę do rejestracji, rejestruje usera, widze ze trafia do bazy,

przy konfiguracji wybieram opcje 'Do you want to automatically authenticate the user after registration? (yes/no) [yes]:' na Yes, po rejestracji automatycznie użytkownik się loguje. Lecz gdy się wyloguje i próbuje si zalogowań przez formularz logowania nic się kompletnie nie dzieje. Nawet gdy wrzucam złe dane to nie wywala błędów

enter image description here

2 odpowiedzi

0 głosów
odpowiedź 24 lutego 2022 przez Bosswell Nałogowiec (36,470 p.)

Sprawdź czy w pliku

config/packages/security.yaml

Odpowiednio skonfigurowałeś firewall

firewalls:
        main:
            # ...
            form_login:
                # "login" is the name of the route created previously
                login_path: login
                check_path: login
komentarz 25 lutego 2022 przez Piotr Zakrzewski Obywatel (1,260 p.)
edycja 25 lutego 2022 przez Piotr Zakrzewski

Nie mam tego kawałka kodu który wkleiłeś,

Mam starsze wersje projektów gdzie logowanie działa, zerkam w ten config.yml i mam prawie 1 = 1 jak w 5.4.4 wersji,

5.4.4:

security:
    enable_authenticator_manager: true
    # https://symfony.com/doc/current/security.html#registering-the-user-hashing-passwords
    password_hashers:
        Symfony\Component\Security\Core\User\PasswordAuthenticatedUserInterface: 'auto'
        App\Entity\User:
            algorithm: auto

    # https://symfony.com/doc/current/security.html#loading-the-user-the-user-provider
    providers:
        # used to reload user from session & other features (e.g. switch_user)
        app_user_provider:
            entity:
                class: App\Entity\User
                property: email
    firewalls:
        dev:
            pattern: ^/(_(profiler|wdt)|css|images|js)/
            security: false
        main:
            lazy: true
            provider: app_user_provider
            custom_authenticator: App\Security\AppAuthenticator
            logout:
                path: app_logout
                # where to redirect after logout
                # target: app_any_route

            # activate different ways to authenticate
            # https://symfony.com/doc/current/security.html#the-firewall

            # https://symfony.com/doc/current/security/impersonating_user.html
            # switch_user: true

    # Easy way to control access for large sections of your site
    # Note: Only the *first* access control that matches will be used
    access_control:
        # - { path: ^/admin, roles: ROLE_ADMIN }
        # - { path: ^/profile, roles: ROLE_USER }

when@test:
    security:
        password_hashers:
            # By default, password hashers are resource intensive and take time. This is
            # important to generate secure password hashes. In tests however, secure hashes
            # are not important, waste resources and increase test times. The following
            # reduces the work factor to the lowest possible values.
            Symfony\Component\Security\Core\User\PasswordAuthenticatedUserInterface:
                algorithm: auto
                cost: 4 # Lowest possible value for bcrypt
                time_cost: 3 # Lowest possible value for argon
                memory_cost: 10 # Lowest possible value for argon

 

5.4.2: (tutaj rejestracja i logowanie działą prawidłowo)

security:
    encoders:
        App\Entity\User:
            algorithm: auto

    # https://symfony.com/doc/current/security.html#where-do-users-come-from-user-providers
    providers:
        # used to reload user from session & other features (e.g. switch_user)
        app_user_provider:
            entity:
                class: App\Entity\User
                property: username
    firewalls:
        dev:
            pattern: ^/(_(profiler|wdt)|css|images|js)/
            security: false
        main:
            anonymous: true
            lazy: true
            provider: app_user_provider
            guard:
                authenticators:
                    - App\Security\AppAuthenticator
            logout:
                path: app_logout
                # where to redirect after logout
                # target: app_any_route

            # activate different ways to authenticate
            # https://symfony.com/doc/current/security.html#firewalls-authentication

            # https://symfony.com/doc/current/security/impersonating_user.html
            # switch_user: true

    # Easy way to control access for large sections of your site
    # Note: Only the *first* access control that matches will be used
    access_control:
        # - { path: ^/admin, roles: ROLE_ADMIN }
        # - { path: ^/profile, roles: ROLE_USER }

EDIT, cofnalem sie do wersji 5.4.3 oraz 5.4.0 niestety objawy sa identyczne,... na starych projektach podciagnietych do wersji 5.4.* logowanie dziala, na nowych projektach juz nie :/

0 głosów
odpowiedź 25 lutego 2022 przez Piotr Zakrzewski Obywatel (1,260 p.)

Problem rozwiazany !

Nalezy wprowadzic taka zmiane w : app\vendor\symfony\security-http\Authenticator\AbstractLoginFormAuthenticator.php

    public function supports(Request $request): bool

    {

        //return $request->isMethod('POST') && $this->getLoginUrl($request) === $request->getPathInfo();

        return self::LOGIN_ROUTE === $request->attributes->get('_route') && $request->isMethod('POST');

    }

 

komentarz 25 lutego 2022 przez Ehlert Ekspert (212,670 p.)
Paczek które instalujesz nie powinno się modyfikować.
komentarz 26 lutego 2022 przez Piotr Zakrzewski Obywatel (1,260 p.)
W takim razie podrzuć lepsze , działające rozwiązanie.
komentarz 26 lutego 2022 przez Ehlert Ekspert (212,670 p.)
Dawno nie siedziałem w Symfony, ale dokumentacja wyjaśnia wszystko. Jeśli nie jesteś logowany, to możliwe że w logach będzie o tym informacja. Może firewall nie wie, że chcesz się zalogować na tej akcji?

Plików z vendor nie powinno się ani wersjonować, ani modyfikować.

Podobne pytania

0 głosów
1 odpowiedź 141 wizyt
0 głosów
1 odpowiedź 195 wizyt
0 głosów
1 odpowiedź 235 wizyt

92,575 zapytań

141,424 odpowiedzi

319,650 komentarzy

61,961 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...