Symfony 4: выбор пользователя из БД и провайдера нестандартного пользователя возвращает «неверные учетные данные» - PullRequest
0 голосов
/ 26 мая 2018

Я создаю API на основе Symfony 4.

В моем пользовательском провайдере пользователей я сбрасываю электронную почту пользователей и данные пользователей из базы данных.Адрес электронной почты отображается, но второй дамп не отображается.При получении данных пользователя он возвращает «Bad Credentials».

Вот мой провайдер:

<?php
// src/Security/User/WebserviceUserProvider.php
namespace App\Security\User;

use Symfony\Component\Security\Core\User\UserProviderInterface;
use Symfony\Component\Security\Core\User\UserInterface;
use Symfony\Component\Security\Core\Exception\UsernameNotFoundException;
use Symfony\Component\Security\Core\Exception\UnsupportedUserException;

class WebserviceUserProvider implements UserProviderInterface
{
    private $doctrine;

    public function __construct (\Doctrine\Bundle\DoctrineBundle\Registry $doctrine)
    {
        $this->doctrine = $doctrine;
    }

    public function loadUserByUsername($email)
    {
        var_dump($email);
        $userData = $this->doctrine->getManager()
            ->createQueryBuilder('SELECT u FROM users u WHERE u.email = :email')
            ->setParameter('email', $email)
            ->getQuery()
            ->getOneOrNullResult();
        var_dump($userData);exit;
        // pretend it returns an array on success, false if there is no user

        if ($userData) {
            $username = $userData['email'];
            $password = $userData['password'];
            $salt = $userData['salt'];
            $roles = $userData['roles'];

            // ...

            return new WebserviceUser($username, $password, $salt, $roles);
        }

        throw new UsernameNotFoundException(
            sprintf('Username "%s" does not exist.', $username)
        );
    }

    public function refreshUser(UserInterface $user)
    {
        if (!$user instanceof WebserviceUser) {
            throw new UnsupportedUserException(
                sprintf('Instances of "%s" are not supported.', get_class($user))
            );
        }

        return $this->loadUserByUsername($user->getUsername());
    }

    public function supportsClass($class)
    {
        return WebserviceUser::class === $class;
    }
}

Если я отправляю свои данные для входа в систему json, он возвращает следующее:

string(13) "test@test.com" {"code":401,"message":"Bad credentials"}

Кто-нибудь знает эту проблему?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...