у меня есть TokenAuthenticator
который реализует SimplePreAuthenticatorInterface
, AuthenticationSuccessHandlerInterface
а также AuthenticationFailureHandlerInterface
, Это создает PreAuthenticatedToken
маркер.
В этом классе у меня есть метод 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
метод type-hints $token
переменная к TokenInterface
— что вызовет getCredentials
чтобы потом вернуться null
?
Требуется ли полная аутентификация для всех маршрутов?
Если вы разрешите анонимным пользователям getCredentials
вернусь ''
, как вы можете видеть в этом фрагменте из класса
/**
* {@inheritdoc}
*/
public function getCredentials()
{
return '';
}
Другой класс токенов по умолчанию, который возвращает это RememberMeToken
,
Других решений пока нет …