令牌存储不包含身份验证令牌和denyAccessUnlessGranted()

问题描述 投票:0回答:1

我有一个错误:

“令牌存储不包含身份验证令牌。一个可能的原因可能是没有防火墙配置此URL。

这是由denyAccessUnlessGranted()引起加入到控制器。它发生在测试环境有security: false。有没有办法处理这样的情况下,还是应该用它做什么的环境机制?

跟踪:

0 /backend/vendor/symfony/framework-bundle/Controller/ControllerTrait.php(179): Symfony\Component\Security\Core\Authorization\AuthorizationChecker->isGranted('read', Object(App\Entity\Company))
1 /backend/vendor/symfony/framework-bundle/Controller/ControllerTrait.php(192): Symfony\Bundle\FrameworkBundle\Controller\AbstractController->isGranted('read', Object(App\Entity\Company))
2 /backend/src/Controller/CompanyController.php(125): Symfony\Bundle\FrameworkBundle\Controller\AbstractController->denyAccessUnlessGranted('read', Object(App\Entity\Company))
3 /backend/vendor/symfony/http-kernel/HttpKernel.php(150): App\Controller\CompanyController->cget(Object(Symfony\Component\HttpFoundation\Request), Object(App\Service\CompanyService))
4 /backend/vendor/symfony/http-kernel/HttpKernel.php(67): Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object(Symfony\Component\HttpFoundation\Request), 1)
5 /backend/vendor/symfony/http-kernel/Kernel.php(198): Symfony\Component\HttpKernel\HttpKernel->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true)
6 /backend/public/index.php(37): Symfony\Component\HttpKernel\Kernel->handle(Object(Symfony\Component\HttpFoundation\Request))
7 {main}"
symfony authorization symfony4 symfony4-voter
1个回答
1
投票

为什么你需要使用安全的虚假的测试环境。如果你这样做,你使用denyAccessUnlessGranted()在你的应用程序,你会得到你所提到的结果。为了解决这个问题,你必须使用一个尝试捕捉巫婆给你留下2个选项,他们都不是一个好。

denyAccessUnlessGranted 2种抛出的异常类型,你需要捕捉

  • \ LogicException
  • AuthenticationCredentialsNotFoundException

这是我所提到的两种选择

  1. 你抑制异常,让脚本运行的什么都没有发生。如果你这样做,你不会测试你的应用程序的安全配置,甚至更糟的是,如果你把这个代码,抑制异常到生产环境中,一些生产配置错误可以留下您的安全区域保护。
  2. 当你发现这个异常你扔AccessDeniedException异常。这将阻止访问的地区在你的应用程序的生产环境恶劣的配置的情况下,做这将使应用程序在测试环境中无法访问的这部分,我不认为你想要的。

应用程序的安全组件是尽可能多的应用程序,因为每个其他业务功能的一部分。它应该是在每一个环境中进行活动,并配置相同。您的测试,开发或督促环境之间唯一的区别应该是在参数文件(之类的东西存储在哪里的用户)。

希望这有助于亚历Cosoi

© www.soinside.com 2019 - 2024. All rights reserved.