Symfony2自定义用户提供程序未进行身份验证/登录

时间:2014-02-21 20:14:35

标签: php symfony

我有一个名为CustomUserProvider的自定义用户提供程序,我用它来管理登录。我一直遇到的问题是,它没有验证/登录用户 - 它刷新了页面,没有任何反应。

我甚至一直遵循它,看看它是否进入了loadUserByUsername方法,而且它是。 $userData会填充正确的用户,并且应该返回它。为了更进一步,我甚至还设置了一个自定义身份验证器,以确保令牌正确生成 - 即使这样,它也没有记录它们 - 只是刷新页面,实际上没有发生任何事情。 / p>

以下是来自loadUserByUsername的{​​{1}}代码段。

CustomUserProvider

这是我的public function loadUserByUsername($username) { // query database and do the custom salt/password check $userData = $this->em->createQuery( '....' )->setParameter('username', $username) ->getResult(); if (count($userData) > 0) { return $userData[0]; } else { throw new UsernameNotFoundException( sprintf('Username "%s" does not exist.', $username) ); } } 文件:

security.yml

*更新*

我正在检查security: encoders: Symfony\Component\Security\Core\User\User: plaintext Project\Bundle\MainBundle\Entity\Accounts: sha512 providers: chain_provider: chain: providers: [my_fos_facebook_provider, custom_provider] my_fos_facebook_provider: id: my.facebook.user custom_provider: id: custom_user_provider firewalls: secured_area: pattern: ^/ fos_facebook: app_url: "http://apps.facebook.com/sendioso-dev/" server_url: "http://www.website.com/facebookApp/" login_path: _security_login check_path: _security_check default_target_path: / provider: my_fos_facebook_provider form_login: login_path: project_main_login check_path: project_main_login_check provider: custom_provider logout: path: project_main_logout anonymous: ~ #simple_preauth: # authenticator: custom_authenticator access_control: - { path: ^/account, roles: ROLE_USER } ,结果出现了:

dev.log

所以看起来它有点工作,但它实际上并没有让我登录 - 只刷新页面就是这样。

*更新2 *

我在[2014-02-21 21:39:40] security.INFO: User "email@email.com" has been authenticated successfully [] [] 中调用refreshUser(UserInterface $user)时,进行了更多挖掘,并发现它正在传递一个包含所有NULL值的帐户对象。

任何人都知道为什么会这样做?

1 个答案:

答案 0 :(得分:0)

我发现了这个问题。

在序列化“帐户”对象时,它不会在序列化中保留数据。因此,无论何时反序列化,它都会使所有内容都为NULL。

我进入实体并修复了序列化的方式,所以现在它会保留我需要的列才能工作。