@@ -354,3 +354,42 @@ service you created before:
354
354
->tokenProvider(DoctrineTokenProvider::class)
355
355
;
356
356
};
357
+
358
+ Activating Remember Me When Using a Custom Authenticator
359
+ --------------------------------------------------------
360
+
361
+ When you use a custom authenticator, you must add a ``RememberMeBadge `` to the ``Passport ``
362
+ for the remember me function to be activated. Without the badge, remember me will not be
363
+ active, regardless of any other remember me settings.
364
+
365
+ For example::
366
+
367
+ // src/Service/LoginAuthenticator.php
368
+ namespace App\Service;
369
+
370
+ // ...
371
+ use Symfony\Component\Security\Http\Authenticator\AbstractAuthenticator;
372
+ use Symfony\Component\Security\Http\Authenticator\Passport\Badge\CsrfTokenBadge;
373
+ use Symfony\Component\Security\Http\Authenticator\Passport\Badge\RememberMeBadge;
374
+ use Symfony\Component\Security\Http\Authenticator\Passport\Badge\UserBadge;
375
+ use Symfony\Component\Security\Http\Authenticator\Passport\Passport;
376
+ use Symfony\Component\Security\Http\Authenticator\Passport\PassportInterface;
377
+
378
+ class LoginAuthenticator extends AbstractAuthenticator
379
+ {
380
+ public function authenticate(Request $request): PassportInterface
381
+ {
382
+ $password = $request->request->get('password');
383
+ $username = $request->request->get('username');
384
+ $csrfToken = $request->request->get('csrf_token');
385
+
386
+ return new Passport(
387
+ new UserBadge($username),
388
+ new PasswordCredentials($password),
389
+ [
390
+ new CsrfTokenBadge('login', $csrfToken),
391
+ new RememberMeBadge(),
392
+ ]
393
+ );
394
+ }
395
+ }
0 commit comments