Запомнить меня в Symfony5 не работает после перезагрузки браузера - PullRequest
0 голосов
/ 23 января 2020

Я использую Symfony 5.

Я хочу использовать опцию "запомнить меня" в форме входа в систему.

Когда я соединяюсь с формой входа, повар ie "REMEMBERME" создано. Но когда я ухожу и возвращаюсь на сайт (после перезапуска браузера), я отключаюсь, и повар ie "REMEMBERME" исчезает. Почему?

login. html .twig:

<form method="post">
{% if error %}
    <div class="alert alert-danger">{{ error.messageKey|trans(error.messageData, 'security') }}</div>
{% endif %}

{% if app.user %}
    <div class="mb-3">
        You are logged in as {{ app.user.username }}, <a href="{{ path('app_logout') }}">Logout</a>
    </div>
{% endif %}

<h1 class="h3 mb-3 font-weight-normal">Please sign in</h1>
<label for="inputEmail">Email</label>
<input type="email" value="{{ last_username }}" name="email" id="inputEmail" class="form-control" required autofocus>
<label for="inputPassword">Password</label>
<input type="password" name="password" id="inputPassword" class="form-control" required>

<input type="hidden" name="_csrf_token"
       value="{{ csrf_token('authenticate') }}"
>

<div class="checkbox mb-3">
    <label>
        <input type="checkbox" name="_remember_me"> Remember me
    </label>
</div>

<button class="btn btn-lg btn-primary" type="submit">
    Sign in
</button>

SecurityController> login ():

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

    // 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]);
}

security.yaml:

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

providers:
    in_memory: { memory: null }
    in_database:
        entity:
            class: App\Entity\User
            property: email
firewalls:
    dev:
        pattern: ^/(_(profiler|wdt)|css|images|js)/
        security: false
    main:
        anonymous: lazy
        provider: in_database
        guard:
            authenticators:
                - App\Security\LoginFormAuthenticator
        logout:
            path: app_logout
        remember_me:
            secret: '%env(APP_SECRET)%'
            token_provider: 'Symfony\Bridge\Doctrine\Security\RememberMe\DoctrineTokenProvider'

access_control:
    # - { path: ^/admin, roles: ROLE_ADMIN }
    # - { path: ^/profile, roles: ROLE_USER }
...