Php Symfony2-在登录时对非对象调用成员函数getPassword()
我用symfony实现了一个简单的标准登录。该错误仅在我输入正确的凭据时出现,这是完整错误: 错误:在C:\BitNami\wamp\apache2\htdocs\Scouter\front\src\Scouter\UserBundle\Entity\User.php第422行对非对象调用成员函数getPassword 堆栈跟踪的屏幕截图可在此处找到: security.ymlPhp Symfony2-在登录时对非对象调用成员函数getPassword(),php,symfony,Php,Symfony,我用symfony实现了一个简单的标准登录。该错误仅在我输入正确的凭据时出现,这是完整错误: 错误:在C:\BitNami\wamp\apache2\htdocs\Scouter\front\src\Scouter\UserBundle\Entity\User.php第422行对非对象调用成员函数getPassword 堆栈跟踪的屏幕截图可在此处找到: security.yml encoders: Scouter\UserBundle\Entity\User: algor
encoders:
Scouter\UserBundle\Entity\User:
algorithm: bcrypt
cost: 15
role_hierarchy:
ROLE_ADMIN: ROLE_USER
ROLE_SUPER_ADMIN: [ROLE_USER, ROLE_ADMIN, ROLE_ALLOWED_TO_SWITCH]
providers:
scouter_users:
entity: { class: UserBundle:User }
firewalls:
secured_area:
pattern: ^/
form_login:
check_path: /user/login_check
login_path: /user/login
logout:
path: /user/logout
target: /
anonymous: ~
remember_me:
key: "%secret%"
lifetime: 31536000
path: /
domain: ~
我已经分离了和实体,因为我想稍后实现oauth。密码存储在我的成员实体中,用户名存储在用户实体中。
更新:我一直在调试和转储symfony核心代码中所有可能的变量。该错误是由于保存在AbstractToken中的用户返回的是成员ID而不是成员对象。我还是不知道为什么。。。因此,请随意提出可能的解决方案
我前一段时间就开始工作了。我不知道出了什么问题。谁有什么想法
提前谢谢 如上所述,您的成员实体中没有唯一的主键id,我不知道,可能是我错了,可能是您没有将实体的完整版本上载到github。。。如果您忘记添加,只需添加它,条令会使用它获取对对象的引用。请发布您的身份验证处理程序的代码。我想我没有自定义的身份验证处理程序。我正在使用Symfony的标准用户/身份验证提供商?如果我错了:我在哪里找到这段代码?也许你忘了添加一个use-Scouter\UserBundle\Entity\Member,并在用户类中的构造函数中实例化它?Member是什么?它在哪里居住?它当前为空,这就是错误的原因。我编辑了我的问题Noy Gabay。在扩展UserProviderInterface的用户存储库中,当我在refreshUser方法中转储用户实体时,成员已正确加载。主键映射到user\u id列。。。或者这是不可能的,因为它也是与用户的一对一关系table@HelenaStandaert您需要向成员实体添加唯一主键,并在用户实体中受保护的$Member上方指定它。因为,默认情况下,条令按id引用对象,这是一个流行的名称,如果在模式定义中对其进行了不同的调用,则需要在映射信息中指定它。我从来没有使用过注释映射,下面是一个示例,说明如何以xml格式进行此操作:
public function getPassword()
{
return $this->getMember()->getPassword();
}
public function getSalt()
{
return $this->getMember()->getPassword();
}