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