gpt4 book ai didi

Symfony FOSUserBundle - 登录 - 无效凭证

转载 作者:行者123 更新时间:2023-12-01 13:46:07 26 4
gpt4 key购买 nike

我对 FosUserBundle 有疑问,

实际上我是按照这个教程学的

http://symfony.com/doc/current/bundles/FOSUserBundle/index.html

最后它说你现在可以登录“/app.com/app_dev.php/login!”

这里是 photo

我的路由文件:

   app:
resource: "@AppBundle/Controller/"
type: annotation


# easy_admin_bundle:
# resource: "@EasyAdminBundle/Controller/"
# type: annotation
# prefix: /admin

fos_user:
resource: "@FOSUserBundle/Resources/config/routing/all.xml"

我的安全文件:

    security:
encoders:
FOS\UserBundle\Model\UserInterface: bcrypt

role_hierarchy:
ROLE_ADMIN: ROLE_USER
ROLE_SUPER_ADMIN: ROLE_ADMIN

providers:
fos_userbundle:
id: fos_user.user_provider.username

firewalls:
main:
pattern: ^/
form_login:
provider: fos_userbundle
csrf_token_generator: security.csrf.token_manager
# if you are using Symfony < 2.8, use the following config instead:
# csrf_provider: form.csrf_provider

logout: true
anonymous: true

access_control:
- { path: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/register, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/resetting, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/admin/, role: ROLE_ADMIN }

最佳答案

手动将用户详细信息放入数据库可能是问题所在。除非您通过正确的过程,否则您最终会得到一个未加密的密码,因此当您尝试使用 bcrypt 进行身份验证时(如您的安全文件中所述),密码将不匹配。

您有 2 个选择。命令行或以编程方式执行。


命令行创建

看看 list of FOSUserBundle command line tools .

关注instructions用于创建用户,您应该会取得更大的成功。我知道你试过这个,但按照教程再试一次。值得尝试这样做:

$ php bin/console fos:user:create adminuser --super-admin

并根据要求输入额外数据。


Controller 创建

从 Controller 的角度来看,您需要使用 fos_user.user_manager 服务来设置您的新用户。

所以,像这样:

$userManager = $this->get('fos_user.user_manager');
$user = $userManager->createUser();

然后在你的表单处理脚本中:

$userManager->updateUser($user);

这将通过正确的密码编码器解析从表单中收集和提取的 plainPassword 数据。然后它将使 plainPassword 属性为 null,以便在数据库中保持安全。

因此,您完成的 Controller 方法可能如下所示:

public function newUser( Request $request ) {
// get a blank user, you can use new User if you like but I like to use their tools seeing as they took the time to build them.
$user = $this->get('fos_user.user.manager')->createUser();

// build the form
$form = $this->createForm(UserType::class, $user);

// bind the form data (if there) to the entity.
$form->handleRequest( $request );

if ( $form->isSubmitted && $form->isValid() ) {
// this will properly encode the password, if changed, remove any plain text versions and flush into the db.
$this->get('fos_user.user.manager')->updateUser($user);

// send the user somewhere with a congrats message
} else {
// anything for invalid form;
}


return $this->render('forms/form.html.twig', [
'form' => $form->createView()
]);
}

关于Symfony FOSUserBundle - 登录 - 无效凭证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36040133/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com