Symfony2 - 在登录时对非对象调用成员函数getPassword()

时间:2014-08-14 14:06:13

标签: php symfony

我用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:   ~

我已将usermember实体分开,因为我想稍后实现oauth。密码存储在我的成员实体中,用户名存储在用户实体中。 db-model

public function getPassword()
{
    return $this->getMember()->getPassword();
}

public function getSalt()
{
   return $this->getMember()->getPassword();
}

UPDATE:我一直在调试并转储symfony核心代码中的所有可能变量。该错误是由保存在AbstractToken中的用户返回成员 ID 而不是成员对象的事实引起的。我仍然不知道为什么会这样......所以请随意提出可能的解决方案。

我有一段时间以前的工作。我不知道出了什么问题。谁有任何想法?

提前致谢!

1 个答案:

答案 0 :(得分:0)

正如我上面所写,您的会员实体中没有唯一的主键(通常是ID)(我不知道,可能是我错了,你可能没有上传完整的你的实体的版本到github ..)。如果您忘记添加,只需添加它,Doctrine使用它来获取对象的引用..