Новое в Symfony 6.3 — Улучшения login и logout

Источник: «New in Symfony 6.3: Login and Logout Improvements»
Symfony 6.3 позволяет перенаправлять пользователей после их программного логина, добавляет поддержку 'Запомнить меня' для JSON логинов и позволяет очищать данные сайта после выхода пользователя.

Пользовательское перенаправление с программным входом в систему

В Symfony 6.2 мы представили метод login() для облегчения программного входа пользователей. Однако этот метод возвращал значение void, поэтому вы не могли настроить ответ после логина пользователя в систему.

Базовый UserAuthenticator::authenticateUser(), вызываемый login(), возвращает объект Response, который можно использовать для перенаправления пользователя. Вот почему в Symfony 6.3 метод login() теперь также возвращает объект Response:

use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Bundle\SecurityBundle\Security;
use Symfony\Component\HttpFoundation\Response;

class RegistrationController extends AbstractController
{
public function verifyUserEmail(Security $security): Response
{
// ...

$redirectResponse = $security->login($user);

return $redirectResponse;
}
}

Опция Запомнить меня для JSON логинов

JSON логин — один из встроенных механизмов аутентификации, предоставляемых Symfony. Он популярен, например, при создании API для генерации токенов безопасности на основе заданного имени пользователя (или электронной почты) и пароля.

Запомнить меня — встроенная функция безопасности Symfony позволяющая хранить некоторые учётные данные пользователя в подписанном файле cookie, чтобы им не приходилось вводить их снова при следующем просмотре вашего приложения.

В Symfony 6.3 мы объединяем обе функции для обеспечения поддержки Запомнить меня для JSON логинов. Для этого добавьте ключ _remember_me (имя ключа настраивается) в тело вашего POST-запроса:

{
"username": "dunglas@example.com",
"password": "MyPassword",
"_remember_me": true
}

Очистка данных сайта после logout

HTTP-заголовок Clear-Site-Data очищает данные браузера (файлы cookie, хранилище, кэш), связанные с запрашивающим веб-сайтом. Это позволяет веб-разработчикам лучше контролировать данные, хранящиеся в клиентском браузере.

В Symfony 6.3 мы добавляем поддержку этого HTTP-заголовка через конфигурацию logout ваших файрволлов:

security:
# ...
firewalls:
main:
# ...
logout:
path: app_logout
# доступные опции: 'cache', 'cookies', 'storage', 'executionContexts'
# также вы можете использовать '*' для очистки всех данных
clear_site_data:
- cache
- storage
- executionContexts

Дополнительные материалы

Предыдущая Статья

Новое в Symfony 6.3 — Улучшения Перечислений

Следующая Статья

CSS: Свойства трансформации translate, rotate и scale