2017-02-20 85 views
1

我有一個TokenAuthenticator,它實現了SimplePreAuthenticatorInterface,AuthenticationSuccessHandlerInterfaceAuthenticationFailureHandlerInterface。它創建一個PreAuthenticatedToken令牌。Symfony認證令牌getCredentials返回null

在這一類我有一個名爲authenticateToken方法,它看起來是這樣的。

/** 
* @param TokenInterface  $token 
* @param UserProviderInterface $userProvider 
* @param $providerKey 
* 
* @return PreAuthenticatedToken 
*/ 
public function authenticateToken(TokenInterface $token, UserProviderInterface $userProvider, $providerKey) 
{ 
    $token = $token->getCredentials(); 

代碼的工作,但也出現了一對夫婦的場合最近在那裏getCredentials返回null導致代碼翻倒。

我想弄清這是爲什麼,並考慮使用私有瀏覽器會話和/或清除他們的會話cookie /高速緩存等用戶,但我似乎無法複製此。

考慮authenticateToken方法類型提示的$token變量爲TokenInterface - 什麼會導致getCredentials調用然後返回null

回答

-1

你需要的所有路由都驗證?

如果你允許匿名用戶getCredentials將返回'',你可以在這個片段中從類

/** 
* {@inheritdoc} 
*/ 
public function getCredentials() 
{ 
    return ''; 
} 

其他默認令牌類返回這是RememberMeToken看到。

+0

謝謝,但我不知道這會有所幫助。並不是所有的路由都需要認證,但是這是一個特定的途徑。 – crmpicco

+0

當你轉儲'get_class($ token)'時,你會得到什麼? – mickadoo