我用symfony实现了一个简单的标准登录。只有在我输入正确的凭据时才会出现错误,这是完整的错误:
错误:在C:\ BitNami \ wamp \ apache2 \ htdocs \ Scouter \ front \ src \ Scouter \ UserBundle \ Entity \ User.php第422行中的非对象上调用成员函数getPassword()
可以在此处找到Stack Trace的屏幕截图:http://bit.ly/1lXQvtS
security.yml
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: ~
我已将user和member实体分开,因为我想稍后实现oauth。密码存储在我的成员实体中,用户名存储在用户实体中。
public function getPassword()
{
return $this->getMember()->getPassword();
}
public function getSalt()
{
return $this->getMember()->getPassword();
}
UPDATE:我一直在调试并转储symfony核心代码中的所有可能变量。该错误是由保存在AbstractToken中的用户返回成员 ID 而不是成员对象的事实引起的。我仍然不知道为什么会这样......所以请随意提出可能的解决方案。
我有一段时间以前的工作。我不知道出了什么问题。谁有任何想法?
提前致谢!
答案 0 :(得分:0)
正如我上面所写,您的会员实体中没有唯一的主键(通常是ID)(我不知道,可能是我错了,你可能没有上传完整的你的实体的版本到github ..)。如果您忘记添加,只需添加它,Doctrine使用它来获取对象的引用..