Метод getToken
Метод getToken класса CsrfTokenManager создаёт и возвращает объект CsrfToken для заданного идентификатора токена. Первым параметром передаётся строковый идентификатор tokenId, который обычно совпадает с именем формы или действием. Если токен с таким идентификатором ещё не создан, менеджер генерирует новое случайное значение и сохраняет его в хранилище. Полученный токен затем используется для проверки CSRF-защиты при отправке формы.
Синтаксис
public function getToken(string $tokenId): CsrfToken
Пример
Давайте создадим CSRF-токен и выведем его строковое значение:
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Security\Csrf\CsrfTokenManagerInterface;
class ArticleController extends AbstractController
{
public function index(CsrfTokenManagerInterface $csrfManager): Response
{
$token = $csrfManager->getToken('article_form');
return new Response($token->getValue());
}
}
?>
Результат выполнения кода:
"a1b2c3d4e5f6g7h8i9j0"
Пример
Давайте передадим токен в Twig-шаблон и используем его в форме:
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Security\Csrf\CsrfTokenManagerInterface;
class ArticleController extends AbstractController
{
public function index(CsrfTokenManagerInterface $csrfManager): Response
{
$token = $csrfManager->getToken('article_form');
return $this->render('article/index.html.twig', [
'csrf_token' => $token->getValue(),
]);
}
}
?>
Теперь выведем значение токена в скрытом поле формы:
<form method="post">
<input type="hidden" name="_token" value="{{ csrf_token }}">
<button type="submit">Send</button>
</form>
Результат выполнения кода:
<form method="post">
<input type="hidden" name="_token" value="a1b2c3d4e5f6g7h8i9j0">
<button type="submit">Send</button>
</form>
Смотрите также
-
класс
CsrfTokenManager,
который управляет CSRF-токенами -
метод
isTokenValid,
который проверяет валидность токена -
метод
refreshToken,
который пересоздаёт токен -
метод
removeToken,
который удаляет токен из хранилища