我在 5.4 版本上构建空的新项目,
我使用这些命令来构建项目:
composer create-project symfony/skeleton:"^5.4" testapp54 &&
cd testapp54 &&
composer require webapp &&
composer require symfony/apache-pack &&
composer require symfonycasts/verify-email-bundle &&
composer require symfony/security-bundle &&
composer require symfonycasts/reset-password-bundle &&
php bin/console make:controller MainController &&
php bin/console make:user &&
php bin/console make:auth &&
php bin/console make:registration &&
php bin/console make:reset-password &&
php bin/console make:migration &&
php bin/console doctrine:migrations:migrate
在这些安装和配置应用程序正常工作之后,如果我在conf选项中选择,我什至可以注册Do you want to automatically authenticate the user after registration? (yes/no) [yes]:
是的,我在注册后登录。但如果我注销并再次尝试登录,我就不能!即使我输入了错误的凭据,我也没有任何错误。
早在 5.2 左右,Symfony 就引入了另一种身份验证系统,称为 Http 身份验证。它的目标是取代旧的 Guard 身份验证系统。
Authenticator 类包含一个支持方法,该方法基本上检测何时处理 POST /login 并启动身份验证过程。如果该方法返回 false,则不会尝试进行身份验证。
在新引入的Http认证系统中,默认支持的方法不是很健壮。它在使用时有效symfony server:run
web 服务器,但对于许多其他有效的服务器配置失败。
因此,如果您的身份验证失败且没有错误消息,请尝试使用以下命令覆盖 make:auth 生成的身份验证器类中的supports方法:
public function supports(Request $request)
{
return self::LOGIN_ROUTE === $request->attributes->get('_route')
&& $request->isMethod('POST');
}
看看是否有帮助。这是旧的 Guard 身份验证器曾经使用的。并随时发表评论https://github.com/symfony/maker-bundle/issues/1056 https://github.com/symfony/maker-bundle/issues/1056。也许我们可以让制造商调整他们的代码。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)