我有一個名爲CustomUserProvider的自定義用戶提供程序,我用它來管理登錄。我遇到的問題是,它不認證/登錄用戶 - 刷新頁面並沒有任何反應。Symfony2自定義用戶提供程序不驗證/登錄
我甚至跟着它,看看它是否進入loadUserByUsername方法,它是。 $userData
獲得填充正確的用戶,它應該返回它。爲了更進一步,我甚至設置了一個自定義的身份驗證器,以確保令牌得到正確生成 - 即使是這樣,它不會記錄它們 - 只是刷新頁面,並且實際上沒有發生任何事情。
這是loadUserByUsername
的片段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 }
* UPDATE *
我被檢查dev.log
這想出了:
[2014-02-21 21:39:40] security.INFO: User "[email protected]" has been authenticated successfully [] []
所以它看起來像它的有點工作,但確實如此沒有實際登錄我 - 只刷新頁面,就是這樣。
*更新2 *
我做了一些更多的挖掘,並發現它傳遞一個帳戶對象與所有NULL值,在CustomUserProvider
調用refreshUser(UserInterface $user)
時。
任何人都知道它爲什麼會這樣做?