我正在尝试按照symfony 4 documentation设置传统的登录和注册表单。
使用注册表单我似乎能够将用户正确注册到arch linux上的mariaDB数据库。
我正在使用symfony开发服务器。当我尝试使用注册用户登录时,我会在登录页面上获取此HTML
由于系统问题,无法处理身份验证请求。
如果用户或密码不好或者我没有填写字段,我会收到同样的错误。
使用-vvv verboses启动symphony 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的网络检查器,似乎登录帖子返回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 }
我没有使用用户名,因此我将其从User类和注册管理器中删除,并使user.getUsername按照doc的建议返回用户电子邮件。
答案 0 :(得分:5)
您的问题如下:
property: username
在安全性方面,只需将其替换为电子邮件,因为您不会使用用户界面中的用户名变量。
要找到答案,请使用Web帮助程序包来分析返回的请求302。
答案 1 :(得分:3)
我遇到了同样的问题,并想为Epoch接受的答案添加一些细节。以下是使用symfony's web debug tool bar
进行调试的步骤注意::我正在使用FOSUserBundle,但是这些步骤是调试的常规步骤
这将打开有关当前请求的调试信息的事件探查器,在本例中为302。但是我们需要调试发生authentication failure
的位置。因此,请从左侧菜单中单击Last 10
,如图
现在,这将打开一个包含Last 10
个请求的页面。查找实际执行身份验证的请求。就我而言,它是POST
请求/login_check
。单击令牌以打开此请求的调试详细信息
现在,您可以查找身份验证失败的详细信息。希望这可以帮助其他有同样问题的人。谢谢!