【发布时间】:2021-11-08 14:39:16
【问题描述】:
我正在使用新的 Symfony 授权系统。
在 security.yaml 文件中,我设置了以下访问限制。
security:
enable_authenticator_manager: true
//....
role_hierarchy:
ROLE_ADMIN: [ROLE_USER]
access_control:
- { path: ^/login, roles: PUBLIC_ACCESS }
- { path: ^/signup, roles: PUBLIC_ACCESS }
- { path: ^/reset, roles: PUBLIC_ACCESS }
- { path: ^/, roles: ROLE_USER }
在我的测试中,我试图捕捉 302 重定向。
$client = static::createClient();
$client->request('GET', '/');
$this->assertSame(302, $client->getResponse()->getStatusCode());
但我收到以下错误消息。
未能断言 500 与 302 相同。
请注意,我收到的是 500 错误而不是 403 重定向代码。
然后我尝试跟踪请求。
$client->catchExceptions(false);
我看到以下请求堆栈。
有 1 个错误:
- App\Tests\Functional\HomeTest::testGuest Symfony\Component\Security\Core\Exception\AccessDeniedException: 访问被拒绝。
C:\Users\webgr\projects\project-manager\manager\vendor\symfony\security-http\Firewall\AccessListener.php:112 C:\Users\webgr\projects\project-manager\manager\vendor\symfony\security-http\Firewall\AccessListener.php:106 C:\Users\webgr\projects\project-manager\manager\vendor\symfony\security-bundle\Debug\WrappedLazyListener.php:49 C:\Users\webgr\projects\project-manager\manager\vendor\symfony\security-bundle\Security\LazyFirewallContext.php:60 C:\Users\webgr\projects\project-manager\manager\vendor\symfony\security-bundle\Debug\TraceableFirewallListener.php:59 C:\Users\webgr\projects\project-manager\manager\vendor\symfony\security-http\Firewall.php:86 C:\Users\webgr\projects\project-manager\manager\vendor\symfony\event-dispatcher\Debug\WrappedListener.php:117 C:\Users\webgr\projects\project-manager\manager\vendor\symfony\event-dispatcher\EventDispatcher.php:230 C:\Users\webgr\projects\project-manager\manager\vendor\symfony\event-dispatcher\EventDispatcher.php:59 C:\Users\webgr\projects\project-manager\manager\vendor\symfony\event-dispatcher\Debug\TraceableEventDispatcher.php:151 C:\Users\webgr\projects\project-manager\manager\vendor\symfony\http-kernel\HttpKernel.php:132 C:\Users\webgr\projects\project-manager\manager\vendor\symfony\http-kernel\HttpKernel.php:78 C:\Users\webgr\projects\project-manager\manager\vendor\symfony\http-kernel\Kernel.php:199 C:\Users\webgr\projects\project-manager\manager\vendor\symfony\http-kernel\HttpKernelBrowser.php:65 C:\Users\webgr\projects\project-manager\manager\vendor\symfony\framework-bundle\KernelBrowser.php:169 C:\Users\webgr\projects\project-manager\manager\vendor\symfony\browser-kit \AbstractBrowser.php:402 C:\Users\webgr\projects\project-manager\manager\tests\Functional\HomeTest.php:15
为什么我不能测试“访问控制”?
为什么我在测试时收到 500 服务器错误而不是简单的重定向 302?
我很乐意接受任何建议。
提前谢谢你。
这是我想补充的另一件事,这些信息很可能是决定性的。我的网站使用 https 运行。
【问题讨论】:
标签: phpunit authorization access-control symfony5