Symfony - Всегда ВЫЙТИ, когда я go в / login - PullRequest
0 голосов
/ 06 августа 2020

Моя проблема очень проста, и я занимаюсь этим с сегодняшнего утра ..

Когда я go в / login, я напрямую отключаюсь, я переключаюсь на анонимный статус на symfony 5.

Это мой контроллер входа в систему:

/**
 * @Route("/login", name="app_login")
 * @param AuthenticationUtils $authenticationUtils
 * @return Response
 */
public function login(AuthenticationUtils $authenticationUtils): Response
{
     if ($this->getUser()) {
         return $this->redirectToRoute('index');
     }

    // get the login error if there is one
    $error = $authenticationUtils->getLastAuthenticationError();
    // last username entered by the user
    $lastUsername = $authenticationUtils->getLastUsername();

    return $this->render('security/login.html.twig', ['last_username' => $lastUsername, 'error' => $error]);
}

Прежде чем я перейду в свое состояние (если .. this-> getUser ()), я уже отключился.

Это это мой контроллер выхода из системы:

/**
 * @Route("/logout", name="app_logout")
 */
public function logout()
{
    // controller can be blank: it will never be executed!
    throw new \Exception('Don\'t forget to activate logout in security.yaml');
}

и security.yaml:

security:
encoders:
    App\Entity\User:
        algorithm: bcrypt
# https://symfony.com/doc/current/security.html#where-do-users-come-from-user-providers
providers:
    users_in_memory: { memory: null }
    app_user_provider:
        entity:
            class: App\Entity\User
            property: email
firewalls:
    dev:
        pattern: ^/(_(profiler|wdt)|css|images|js)/
        security: false
    main:
        anonymous: lazy
        provider: users_in_memory
        guard:
            authenticators:
                - App\Security\SecureAuthentication
        logout:
            path: app_logout
            # where to redirect after logout
            target: index

        # 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 }

большое спасибо и хорошего дня

1 Ответ

1 голос
/ 07 августа 2020

В вашей основной конфигурации брандмауэра вы установили

    main:
        provider: users_in_memory

Таким образом, вы используете провайдера без пользователей, поэтому вы не сможете войти в систему. Попробуйте изменить его на app_user_provider.

Кроме того, на вашем основном брандмауэре отсутствует шаблон. У меня никогда не было конфигураций брандмауэра без шаблона, поэтому я не уверен, что происходит в этом случае. Возможно, он просто его пропускает.

    main:
        pattern: ^/

Вы можете попробовать эти две вещи, но обязательно делайте их одну за другой, чтобы узнать, какой из них решил проблему (если это действительно окажется решением ):)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...