У меня проблема, очень похожая на: Symfony Запомнить меня не работает, cookie уничтожается при перезагрузке браузера
К сожалению, их решение не решает проблему в Symfony 4.
После входа в систему создается файл cookie «REMEMBERME».Если я перезагружаю свой браузер, я все еще вижу свой файл cookie, но когда я получаю доступ к странице под защитой IS_AUTHENTICATED_REMEMBERED
, она не работает, и я перенаправлен на страницу входа, затем файл cookie уничтожается, и пользователь долженснова войдите в систему.
Я разрабатываю процесс аутентификации, как описано в официальной документации (действительно, для книги, никакой необычной настройки, нет FOSUSERBUNDLE).
Вы можете найти мой сервис.yamlвстроенный, как в документации
security:
encoders:
App\Entity\User:
algorithm: bcrypt
# https://symfony.com/doc/current/security.html#where-do-users-come-from-user-providers
providers:
in_memory: { memory: ~ }
our_db_provider:
entity:
class: App\Entity\User
property: email
firewalls:
dev:
pattern: ^/(_(profiler|wdt)|css|images|js)/
security: false
main:
pattern: ^/
http_basic: ~
provider: our_db_provider
anonymous: ~
form_login:
login_path: login
check_path: login
default_target_path: dashboard
remember_me:
secret: '%kernel.secret%'
lifetime: 604800 # 1 week in seconds
path: /
secure: true
name: REMEMBERME
remember_me_parameter: _remember_me
logout:
path: /logout
target: /
secured_area:
form_login:
csrf_token_generator: security.csrf.token_manager
provider: our_db_provider
logout:
path: /logout
target: /
role_hierarchy:
ROLE_ADMIN: ROLE_USER
access_control:
- { path: ^/login, roles: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/profile, roles: IS_AUTHENTICATED_REMEMBERED }
Моя функция входа также подробно описана в документации
public function login(Request $request, AuthenticationUtils $authenticationUtils)
{
// get the login error if there is one
$error = $authenticationUtils->getLastAuthenticationError();
// last username entered by the user
$lastEmail = $authenticationUtils->getLastUsername();
return $this->render('platform/user/login.html.twig', [
'last_email' => $lastEmail,
'error' => $error,
]);
}
Я пыталсязамените ROLE_USER
на IS_AUTHENTICATED_REMEMBERED
в моих маршрутах (я не понимаю, в чем именно разница, я прочитал их документ об этом), но ничего не изменилось.Файл cookie находится здесь, но он все равно не помогает мне оставаться в системе.
Любая помощь здесь очень ценится.Я бы хотел, чтобы в моем приложении была функция «Помни меня».Большое спасибо.