Symfony 4 AJAX Json Аутентификация не работает? - PullRequest
0 голосов
/ 29 ноября 2018

Я новичок в системе аутентификации пользователей Symfony 4 и все еще работаю над тем, чтобы обернуть голову вокруг нее.У меня есть интерфейс, который я создаю в VueJS, и я могу зарегистрировать новых пользователей через Symfony, и они прекрасно сохраняются в базе данных.

Однако я не могу использовать аутентификатор AJAX JSON.Каждая попытка, которую я делаю, говорит: «{error:« Invalid Credentials »}. Обычно довольно легко устранять проблемы Symfony, но, поскольку это AJAX, я не могу легко это устранить. Я начинаю думать, что что-то упустилс "солью" в моем пользовательском объекте, так как я солю паролей. Любые идеи?

Мой запрос AXIOS на веб-интерфейсе:

axios.post('/auth/login', {username: this.username, password: this.password})
                    .then(function(response) {
                        console.log(response);
                    });

config / packages / security.yaml

security:
    encoders:
        App\Entity\User:
            algorithm: argon2i
            cost: 12
    # https://symfony.com/doc/current/security.html#where-do-users-come-from-user-providers
    providers:
        # in_memory: { memory: ~ }
        our_db_provider:
            entity:
                class: App\Entity\User
                # the property to query by - e.g. username, email, etc
                property: username
                # if you're using multiple entity managers
                # manager_name: customer

    firewalls:
        dev:
            pattern: ^/(_(profiler|wdt)|css|images|js)/
            security: false
            # json_login:
            #     check_path: /auth/login
            # provider: our_db_provider
        main:
            anonymous: true
            json_login:
                check_path: /auth/login
            provider: our_db_provider

А вот мой UserEntity.php:

<?php

namespace App\Entity;

use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Security\Core\User\UserInterface;

/**
 * @ORM\Entity(repositoryClass="App\Repository\UserRepository")
 * @ORM\HasLifecycleCallbacks()
 */
class User implements UserInterface, \Serializable
{


    /**
     * @ORM\Id()
     * @ORM\GeneratedValue()
     * @ORM\Column(type="integer")
     */
    private $id;

    /**
     * @ORM\Column(type="string", length=254)
     */
    private $username;

    /**
     * @ORM\Column(type="string", length=128)
     */
    private $password;

    /**
     * @ORM\Column(type="boolean")
     */
    private $isActive;

    /**
     * @ORM\Column(type="json_array", nullable=true)
     */
    private $roles;

    /**
     * @ORM\Column(type="string", length=64)
     */
    private $firstName;

    /**
     * @ORM\Column(type="string", length=64)
     */
    private $lastName;

    /**
     * @ORM\Column(type="datetime")
     */
    private $createdAt;

    /**
     * @ORM\PrePersist
     */
    public function setCreatedAtValue()
    {
        $this->createdAt = new \DateTime();
    }

    public function eraseCredentials()
    {
    }

     /** @see \Serializable::serialize() */
    public function serialize()
    {
        return serialize(array(
            $this->id,
            $this->username,
            $this->password,
            $this->firstName,
            $this->lastName,
            $this->createdAt,
            $this->isActive
            // see section on salt below
            // $this->salt,
        ));
    }

    /** @see \Serializable::unserialize() */
    public function unserialize($serialized)
    {
        list (
            $this->id,
            $this->username,
            $this->password,
            $this->firstName,
            $this->lastName,
            $this->createdAt,
            $this->isActive
            // see section on salt below
            // $this->salt
        ) = unserialize($serialized, array('allowed_classes' => false));
    }

    public function getId(): ?int
    {
        return $this->id;
    }

    public function getUsername(): ?string
    {
        return $this->username;
    }

    public function setUsername(string $username): self
    {
        $this->username = $username;

        return $this;
    }

    public function getPassword(): ?string
    {
        return $this->password;
    }

    public function setPassword(string $password): self
    {
        $this->password = $password;

        return $this;
    }

    public function getIsActive(): ?bool
    {
        return $this->isActive;
    }

    public function setIsActive(bool $isActive): self
    {
        $this->isActive = $isActive;

        return $this;
    }

    public function getRoles() : array
    {
        return $this->roles;
    }

    public function setRoles(array $roles): self
    {
        $this->roles = $roles;

        return $this;
    }

    public function getSalt()
    {
        // you *may* need a real salt depending on your encoder
        // see section on salt below
        return null;
    }

    public function getFirstName(): ?string
    {
        return $this->firstName;
    }

    public function setFirstName(string $firstName): self
    {
        $this->firstName = $firstName;

        return $this;
    }

    public function getLastName(): ?string
    {
        return $this->lastName;
    }

    public function setLastName(string $lastName): self
    {
        $this->lastName = $lastName;

        return $this;
    }

    public function getCreatedAt(): ?\DateTimeInterface
    {
        return $this->createdAt;
    }

    public function setCreatedAt(\DateTimeInterface $createdAt): self
    {
        $this->createdAt = $createdAt;

        return $this;
    }
}

Я не уверен, что лучший способ - это устранить неполадки при входе в AJAX, как это, поскольку все это делается заСцена вроде «волшебства» (как они описывают это в документации).

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