如何解决使用多个防火墙和多个防护
我有一个Symfony 5.1(全栈)应用程序,并且我正在使用Api平台。现在,我想使用API令牌访问API(使用Custom Authentication System with Guard),但是已经登录的用户应该能够在没有令牌的情况下访问API。
我使用了Symfony文档中有关Multiple Guard Authenticators的示例,并添加了第二个身份验证器:
$container->loadFromExtension('security',[
// ...
'firewalls' => [
'api' => [
'context' => 'my_context','pattern' => '^/api','guard' => [
'entry_point' => LoginFormAuthenticator::class,'authenticators' => [
LoginFormAuthenticator::class,ApiTokenAuthenticator::class,],'default' => [
'context' => 'my_context','anonymous' => true,'lazy' => true,'guard' => [
'authenticators' => [
LoginFormAuthenticator::class,);
当我将TokenAuthenticator
用作entry_point
时,登录用户无法访问对^/api/
的请求。他们会得到一个401 Unauthorized
(“在TokenStorage中找不到令牌。”)。
当我将ApiTokenAuthenticator
用作entry_point
时,对^/api/
的(XMLHttp-)请求被重定向到/login
而不是401 Unauthorized
。
我如何拥有两个验证者都可以访问的API端点?
编辑:感谢Cerad,我将context
添加到两个防火墙中,如here所述。没什么区别。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。