如何调试 symfony4 身份验证失败
How to debug symfony4 authentication failure
我正在尝试按照 symfony 4 documentation.
设置传统的登录和注册表单
使用注册表我似乎能够将用户正确注册到 arch 上的 mariaDB 数据库中 linux。
我正在使用 symfony 开发服务器。当我尝试使用注册用户登录时,我在登录页面 HTML 上看到了这个
Authentication request could not be processed due to a system problem.
如果用户名或密码错误或者我没有填写字段,我会得到同样的错误。
使用 -vvv verboses 显示开始 symfony 4 开发
2018-01-26T16:10:26+00:00 [info] Matched route "login".
2018-01-26T16:10:26+00:00 [info] Authentication request failed.
2018-01-26T16:10:26+00:00 [debug] Authentication failure, redirect triggered.
[Fri Jan 26 17:10:26 2018] 127.0.0.1:52250 [302]: /login
2018-01-26T16:10:26+00:00 [info] Matched route "login".
2018-01-26T16:10:26+00:00 [info] Populated the TokenStorage with an anonymous Token.
[Fri Jan 26 17:10:26 2018] 127.0.0.1:52252 [200]: /login
使用 Firefox 的网络检查器似乎登录 post returns error 302。
我不知道如何调试它,或者如何获取更多信息。
这是security.yaml
# config/packages/security.yaml
security:
encoders:
App\Entity\User:
algorithm: bcrypt
providers:
our_db_provider:
entity:
class: App\Entity\User
property: username
firewalls:
main:
provider: our_db_provider
pattern: ^/
anonymous: ~
form_login:
login_path: login
check_path: login
access_control:
- { path: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/register$, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/, role: ROLE_USER }
我不使用用户名,所以我将其从用户 class 和注册控制器中删除,并根据建议将 user.getUsername return 设为用户电子邮件医生
您的问题如下:
property: username
在安全 yaml 中,只需将其替换为电子邮件,因为您不使用用户界面中的用户名变量。
要找出答案,请使用网络帮助包分析返回 302 的请求。
我遇到了同样的问题,想在 Epoch 接受的答案中添加一些细节。以下是使用 symfony's web debug tool bar
进行调试的步骤
注意: 我正在使用 FOSUserBundle 但这些步骤是调试的通用步骤
打开调试工具栏并单击 302 请求旁边的令牌以打开分析器,如图所示
这将打开分析器,其中包含有关当前请求的调试信息,在本例中为 302。但是我们需要调试发生 authentication failure
的位置。因此,点击左侧菜单中的 Last 10
,如图所示
现在这将打开一个包含 Last 10
个请求的页面。查找实际执行身份验证的请求。在我的例子中,它是 POST
请求 /login_check
。单击令牌以打开此请求的调试详细信息
现在,查找 security
通道或您为身份验证配置的通道 logs/errors。
现在您可以查看身份验证失败的详细信息。希望这可以帮助其他人遇到同样的问题。谢谢!
我正在尝试按照 symfony 4 documentation.
设置传统的登录和注册表单使用注册表我似乎能够将用户正确注册到 arch 上的 mariaDB 数据库中 linux。
我正在使用 symfony 开发服务器。当我尝试使用注册用户登录时,我在登录页面 HTML 上看到了这个
Authentication request could not be processed due to a system problem.
如果用户名或密码错误或者我没有填写字段,我会得到同样的错误。
使用 -vvv verboses 显示开始 symfony 4 开发
2018-01-26T16:10:26+00:00 [info] Matched route "login".
2018-01-26T16:10:26+00:00 [info] Authentication request failed.
2018-01-26T16:10:26+00:00 [debug] Authentication failure, redirect triggered.
[Fri Jan 26 17:10:26 2018] 127.0.0.1:52250 [302]: /login
2018-01-26T16:10:26+00:00 [info] Matched route "login".
2018-01-26T16:10:26+00:00 [info] Populated the TokenStorage with an anonymous Token.
[Fri Jan 26 17:10:26 2018] 127.0.0.1:52252 [200]: /login
使用 Firefox 的网络检查器似乎登录 post returns error 302。 我不知道如何调试它,或者如何获取更多信息。
这是security.yaml
# config/packages/security.yaml
security:
encoders:
App\Entity\User:
algorithm: bcrypt
providers:
our_db_provider:
entity:
class: App\Entity\User
property: username
firewalls:
main:
provider: our_db_provider
pattern: ^/
anonymous: ~
form_login:
login_path: login
check_path: login
access_control:
- { path: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/register$, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/, role: ROLE_USER }
我不使用用户名,所以我将其从用户 class 和注册控制器中删除,并根据建议将 user.getUsername return 设为用户电子邮件医生
您的问题如下:
property: username
在安全 yaml 中,只需将其替换为电子邮件,因为您不使用用户界面中的用户名变量。
要找出答案,请使用网络帮助包分析返回 302 的请求。
我遇到了同样的问题,想在 Epoch 接受的答案中添加一些细节。以下是使用 symfony's web debug tool bar
进行调试的步骤注意: 我正在使用 FOSUserBundle 但这些步骤是调试的通用步骤
打开调试工具栏并单击 302 请求旁边的令牌以打开分析器,如图所示
这将打开分析器,其中包含有关当前请求的调试信息,在本例中为 302。但是我们需要调试发生
authentication failure
的位置。因此,点击左侧菜单中的Last 10
,如图所示现在这将打开一个包含
Last 10
个请求的页面。查找实际执行身份验证的请求。在我的例子中,它是POST
请求/login_check
。单击令牌以打开此请求的调试详细信息现在,查找
security
通道或您为身份验证配置的通道 logs/errors。
现在您可以查看身份验证失败的详细信息。希望这可以帮助其他人遇到同样的问题。谢谢!