Метод isTokenValid
Метод isTokenValid класса CsrfTokenManager проверяет,
совпадает ли переданное значение токена с токеном,
сохранённым в хранилище для указанного идентификатора.
Первым параметром передаётся объект CsrfToken,
который содержит идентификатор и значение токена.
Метод возвращает true, если токен валиден,
и false в противном случае.
Синтаксис
public function isTokenValid(CsrfToken $token): bool
Пример
Давайте создадим менеджер токенов, сгенерируем токен и проверим его валидность:
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Security\Csrf\CsrfToken;
use Symfony\Component\Security\Csrf\CsrfTokenManagerInterface;
class CsrfController extends AbstractController
{
public function check(CsrfTokenManagerInterface $csrfManager): Response
{
$token = $csrfManager->getToken('article_form');
$res = $csrfManager->isTokenValid($token);
return new Response(var_export($res, true));
}
}
?>
Результат выполнения кода:
true
Пример
Давайте проверим валидность токена с неверным значением:
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Security\Csrf\CsrfToken;
use Symfony\Component\Security\Csrf\CsrfTokenManagerInterface;
class CsrfController extends AbstractController
{
public function check(CsrfTokenManagerInterface $csrfManager): Response
{
$csrfManager->getToken('article_form');
$token = new CsrfToken('article_form', 'invalid_value');
$res = $csrfManager->isTokenValid($token);
return new Response(var_export($res, true));
}
}
?>
Результат выполнения кода:
false
Пример
Давайте проверим валидность токена для несуществующего идентификатора:
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Security\Csrf\CsrfToken;
use Symfony\Component\Security\Csrf\CsrfTokenManagerInterface;
class CsrfController extends AbstractController
{
public function check(CsrfTokenManagerInterface $csrfManager): Response
{
$token = new CsrfToken('unknown_form', 'abcde');
$res = $csrfManager->isTokenValid($token);
return new Response(var_export($res, true));
}
}
?>
Результат выполнения кода:
false
Смотрите также
-
класс
CsrfTokenManager,
который управляет CSRF-токенами -
метод
getToken,
который генерирует CSRF-токен -
метод
refreshToken,
который пересоздаёт CSRF-токен -
метод
removeToken,
который удаляет CSRF-токен