Sonata-Project 的 Google Authenticator:来自 Application\Sonata\UserBundle\Entity\User 的未定义方法“getTwoStep

Posted

技术标签:

【中文标题】Sonata-Project 的 Google Authenticator:来自 Application\\Sonata\\UserBundle\\Entity\\User 的未定义方法“getTwoStepVerificationCode”【英文标题】:Sonata-Project's Google Authenticator: Undefined Method "getTwoStepVerificationCode" from Application\Sonata\UserBundle\Entity\UserSonata-Project 的 Google Authenticator:来自 Application\Sonata\UserBundle\Entity\User 的未定义方法“getTwoStepVerificationCode” 【发布时间】:2019-07-05 04:14:58 【问题描述】:

伙计们!

我目前正在开发一个基于 Symfony 2.8 和一些 Sonata-Project 捆绑包的项目。目标是实现两因素身份验证(也称为两步验证)。我看到 Sonata-Project 有一个用于实现此类功能的包并安装了它。然后根据sonata's documentation 配置app/config/config.yml 文件,但是当我尝试从登录表单登录我的仪表板时,我这样做没有任何进一步的障碍(没有 2-Factor Authentication Prompt)。在这里,在 ***.com 上,我看到了一些与我的问题(不完全)相关的答案,建议运行 php app/console sonata:user:two-step-verification *ADMIN_USER_NAME*。我试图在我的终端中运行这个命令,但是抛出了这个异常:

[Symfony\Component\Debug\Exception\UndefinedMethodException]
Attempted to call an undefined method named "getTwoStepVerificationCode" of class 
"Application\Sonata\UserBundle\Entity\User".

这里似乎有什么问题?为什么这种方法不存在?我该如何解决这个问题?

P.S.:我尝试将此 Google-Authenticator 包与 Soanata-Project 的 UserBundle 结合使用为it is "a feature" (if I may call it such) of the latter。

【问题讨论】:

【参考方案1】:

您的应用程序是否正确扩展Sonata\UserBundle\Entity\BaseUser?因为如果不是,您将遇到此问题。检查你的班级Application\Sonata\UserBundle\Entity\User

【讨论】:

Application\Sonata\UserBundle\Entity\User 确实缺少 getTwoStepVerificationCode 方法。如何设置它以及如何编辑实体,以便这样的列 (TwoStepVerificationCode) 存在于 DB 中的 Users 表中? @EmilAvramov 您的用户实体必须扩展 Sonata\UserBundle\Entity\BaseUser 才能使 TwoStepAuthentication 工作。

以上是关于Sonata-Project 的 Google Authenticator:来自 Application\Sonata\UserBundle\Entity\User 的未定义方法“getTwoStep的主要内容,如果未能解决你的问题,请参考以下文章

demo.sonata-project.org 的代码

在 sonata-project/block-bundle 4.0 中包含资产

安装 sonata-project/user-bundle symfony 3.3 lts

无法打开输入文件 [COMPOSER]

SonataDoctrineORMAdminExtension.php

安装奏鸣曲新闻捆绑作曲家错误