Mam następujący problem, loguje się do aplikacji przez formularz i jest wszystko ok. Dodałem opcję remember me zgodnie z dokumentacją http://symfony.com/doc/3.4/security/remember_me.html
Niestety po zamknięciu przeglądarki muszę logować się ponownie

Security.yml
security: encoders: AppBundle\Entity\User: algorithm: bcrypt providers: our_db_provider: entity: class: AppBundle:User property: phone firewalls: main: anonymous: ~ logout_on_user_change: true remember_me: secret: '%kernel.secret%' lifetime: 604800 # 1 week in seconds path: / domain: ~ always_remember_me: true form_login: login_path: login check_path: login default_target_path: /diary/list always_use_default_target_path: true csrf_token_generator: security.csrf.token_manager logout: true access_control:
Entity użytkownika
<?php namespace AppBundle\Entity; use Doctrine\ORM\Mapping as ORM; use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity; use Symfony\Component\Security\Core\User\AdvancedUserInterface; /** * @ORM\Table(name="app_users") * @ORM\Entity(repositoryClass="AppBundle\Repository\UserRepository") * @UniqueEntity(fields="email", message="Email already taken") * @UniqueEntity(fields="username", message="Username already taken") * @UniqueEntity(fields="phone", message="Phone already taken") */ class User implements AdvancedUserInterface, \Serializable { /** * @ORM\Column(type="integer") * @ORM\Id * @ORM\GeneratedValue(strategy="AUTO") */ private $id; /** * @ORM\Column(type="string", length=25, unique=true) */ private $username; /** * @ORM\Column(type="string", length=25, unique=true) */ private $phone; /** * @ORM\Column(type="string", length=25) */ private $role; /** * @ORM\Column(type="string", length=64) */ private $password; /** * @ORM\Column(type="string", length=60, unique=true) */ private $email; /** * @ORM\Column(name="is_active", type="boolean") */ private $isActive; public function __construct() { $this->isActive = true; } public function getUsername() { return $this->username; } /** * Set username * * @param string $username * * @return User */ public function setUsername($username) { $this->username = $username; return $this; } public function getSalt() { return null; } public function getPassword() { return $this->password; } /** * Set password * * @param string $password * * @return User */ public function setPassword($password) { $this->password = $password; return $this; } public function getRoles() { } public function eraseCredentials() { } public function isAccountNonExpired() { return true; } public function isAccountNonLocked() { return true; } public function isCredentialsNonExpired() { return true; } public function isEnabled() { return $this->isActive; } /** * @return mixed */ public function getPhone() { return $this->phone; } /** * @param mixed $phone */ public function setPhone($phone) { $this->phone = $phone; } /** @see \Serializable::serialize() */ { $this->id, $this->username, $this->password, $this->phone, $this->isActive, )); } /** @see \Serializable::unserialize() */ { list ( $this->id, $this->username, $this->password, $this->phone, $this->isActive, } /** * Get id * * @return integer */ public function getId() { return $this->id; } /** * Get email * * @return string */ public function getEmail() { return $this->email; } /** * Set email * * @param string $email * * @return User */ public function setEmail($email) { $this->email = $email; return $this; } /** * Get isActive * * @return boolean */ public function getIsActive() { return $this->isActive; } /** * Set isActive * * @param boolean $isActive * * @return User */ public function setIsActive($isActive) { $this->isActive = $isActive; return $this; } /** * Set role * * @param string $role * * @return User */ public function setRole($role) { $this->role = $role; return $this; } /** * Get role * * @return string */ public function getRole() { return $this->role; } }
Kontroler logowania
<?php namespace AppBundle\Controller; use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route; use Symfony\Bundle\FrameworkBundle\Controller\Controller; use Symfony\Component\Security\Http\Authentication\AuthenticationUtils; class SecurityController extends Controller { /** * @Route("/login", name="login") */ public function loginAction(AuthenticationUtils $authUtils) { $error = $authUtils->getLastAuthenticationError(); } /** * @Route("/logout") */ public function logoutAction() { } }
[b]Formularz logowania
Formularz logowania
{% extends 'base.html.twig' %} {% block body %} <form action="{{ path('login') }}" method="post"> <div class="login"> {% if error %} <div class="alert alert-danger"> <div>{{ error.messageKey|trans(error.messageData, 'security') }}</div> </div> {% endif %} <div class="login-triangle"></div> <h2 class="login-header">Log in</h2> <form class="login-container"> <p><input type="text" name="_username" placeholder="Phone"></p> <p><input type="password" name="_password" placeholder="Password"></p> <input type="hidden" name="_csrf_token" value="{{ csrf_token('authenticate') }}"> <input type="checkbox" id="remember_me" name="_remember_me" checked/> <label for="remember_me">Keep me logged in</label> <p><input type="submit" value="Log in"></p> </form> </div> </form> {% endblock %}
Przykładowy kontroler wymagający autoryzacji
<?php namespace AppBundle\Controller; use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route; use Symfony\Bundle\FrameworkBundle\Controller\Controller; class DefaultController extends Controller { /** * @Route("/", name="homepage") */ public function indexAction() { if (!$this->get('security.authorization_checker')->isGranted('IS_AUTHENTICATED_FULLY')) { throw $this->createAccessDeniedException(); } return $this->render('base.html.twig'); } }
Chcę zrobić, aby po zamknięciu przeglądarki i ponownym otwarciu user był nadal zalogowany. Walczę z tym już bardzo długo i bez efektów
