Symfony 4 запомни меня cookie - PullRequest
       15

Symfony 4 запомни меня cookie

2 голосов
/ 04 июня 2019

Я настроил свой проект Symfony 4, запомнив меня. Он создает REMEMBERME cookie с датой истечения срока действия, но как только он истек, я не вышел из системы.

Security.yaml

remember_me:
                name: REMEMBERME
                secret:   '%kernel.secret%'
                lifetime: 120
                path:     /en/admin
                remember_me_parameter: remember_me
                always_remember_me: true
                token_provider: 'Symfony\Bridge\Doctrine\Security\RememberMe\DoctrineTokenProvider'

Вход веточка

<form action="{{ path('security_login') }}" method="post">
    <div class="block block-themed block-rounded block-shadow">
        <div class="block-header bg-gd-dusk">
            <h3 class="block-title">Please Sign In</h3>
            <div class="block-options">
                <button type="button" class="btn-block-option">
                    <i class="si si-wrench"></i>
                </button>
            </div>
        </div>
        <div class="block-content">
            <div class="form-group row">
                <div class="col-12">
                    <label for="username">{{ 'label.username'|trans }}</label>
                    <input type="text" id="username" name="_username" value="{{ last_username }}" class="form-control"/>
                </div>
            </div>
            <div class="form-group row">
                <div class="col-12">
                    <label for="password">{{ 'label.password'|trans }}</label>
                    <input type="password" id="password" name="_password" class="form-control" />
                </div>
            </div>
            <div class="form-group row mb-0">
                <div class="col-sm-6 d-sm-flex align-items-center push">
                    <div class="custom-control custom-checkbox mr-auto ml-0 mb-0">
                        <input type="checkbox" id="remember_me" name="_remember_me" checked/>
                        <label for="remember_me">Keep me logged in</label>
                    </div>
                </div>
                <div class="col-sm-6 text-sm-right push">
                    <input type="hidden" name="_target_path" value="{{ app.request.get('redirect_to') }}"/>
                    <input type="hidden" name="_csrf_token" value="{{ csrf_token('authenticate') }}"/>
                    <button type="submit" class="btn btn-primary">
                        <i class="fa fa-sign-in" aria-hidden="true"></i> {{ 'action.sign_in'|trans }}
                    </button>
                </div>
            </div>
        </div>
        <div class="block-content bg-body-light">
            <div class="form-group text-center">
                <a class="link-effect text-muted mr-10 mb-5 d-inline-block" href="{{ path('user_signup') }}">
                    <i class="fa fa-plus mr-5"></i> Create Account
                </a>
                <a class="link-effect text-muted mr-10 mb-5 d-inline-block" href="{{ path('forgot_password') }}">
                    <i class="fa fa-warning mr-5"></i> Forgot Password
                </a>
            </div>
        </div>
    </div>
</form>

AdminController

public function index(PostRepository $posts): Response
{
    $this->denyAccessUnlessGranted('IS_AUTHENTICATED_FULLY');

    $user = $this->getUser();
    return $this->render('admin/dashboard.html.twig', [
        'user' => $user,
    ]);
}

Роли пользователя

array:2 [▼
  0 => "ROLE_ADMIN"
  1 => "IS_AUTHENTICATED_FULLY"
]

Что мне не хватает? REMEMBERME удаляется автоматически, если я удаляю PHPSESSID, мне нужно заново войти. Но разве это не должно работать без удаления PHPSESSID вручную?

...