Symfony身份验证:凭据错误

时间:2019-01-01 16:39:58

标签: symfony authentication

我创建了一个身份验证表单,当我尝试登录时,出现错误“无效凭据”。 我检查了error.messageKey,但问题并非出自用户名,因此问题必须出自密码。

我四处张望,看不出有什么问题。 你有什么想法吗?

预先感谢

security:
    hide_user_not_found: false
    encoders:
        App\Entity\Utilisateur:
            algorithm: bcrypt
            cost: 5

    providers:
        in_memory: { memory: ~ }

        in_database:
            entity:
                class: App\Entity\Utilisateur
                property: mail

    firewalls:
        dev:
            pattern: ^/(_(profiler|wdt)|css|images|js)/
            security: false
        main:
             anonymous: true

            provider: in_database

            form_login:
                login_path: login
                check_path: login
                default_target_path: home

和login.twig

                <form action="{{ path('login') }}" method="POST">
                    <div class="form-group" id="formMail">
                        <label for="email">Email :</label>
                        <input type="email" class="form-control" id="email" placeholder="dupont@gmail.com" required name="_username">
                        <span class="" id="spanMail"></span>
                        <span class="" id="spanErrMail"></span>
                    </div>

                    <div class="form-group" id="formMdp">
                        <label for="pwd">Mot de passe :</label>
                        <input type="password" class="form-control" id="pwd" placeholder="******" required name="_password">
                        <span class="" id="spanMdp"></span>
                        <span class="" id="spanErrMdp"></span>
                    </div>

用户实体

/**
 * @ORM\Entity(repositoryClass="App\Repository\UtilisateurRepository")
 * @UniqueEntity(
 * fields={"mail"},
 * message="Adresse mail déjà utilisée")
 */
 class Utilisateur implements UserInterface
{
/**
 * @ORM\Id()
 * @ORM\GeneratedValue()
 * @ORM\Column(type="integer")
 */
private $id;

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

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

/**
 * @ORM\Column(type="string", length=255)
 * @Assert\Email(
 *     message = "L'e-mail {{ value }} n'est pas valide ")
 */
private $mail;

/**
 * @ORM\Column(type="string", length=255)
 * @Assert\Length(min="5", minMessage="Le mot de passe doit faire au moins 5 caractères")
 */
private $mdp;

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

public function getNom(): ?string
{
    return $this->nom;
}

public function setNom(string $nom): self
{
    $this->nom = $nom;

    return $this;
}

public function getPrenom(): ?string
{
    return $this->prenom;
}

public function setPrenom(string $prenom): self
{
    $this->prenom = $prenom;

    return $this;
}

public function getMail(): ?string
{
    return $this->mail;
}

public function setMail(string $mail): self
{
    $this->mail = $mail;

    return $this;
}

public function getMdp(): ?string
{
    return $this->mdp;
}

public function setMdp(string $mdp): self
{
    $this->mdp = $mdp;

    return $this;
}

public function getPassword(){}
public function getUsername(){
    return $this->mail;
}
public function eraseCredentials(){}
public function getSalt(){
    return '';
}
public function getRoles()
{
    return ['ROLE_USER'];
}
}

1 个答案:

答案 0 :(得分:0)

我发现了我的秘密。 我使用自己的函数名称来获取电子邮件和密码。

我应该实现getUsername()和getPassword()。

public function getMdp(): ?string
{
    return $this->mdp;
}

public function setMdp(string $mdp): self
{
    $this->mdp = $mdp;

    return $this;
}

public function getPassword(){
    return $this->mdp;
}

public function getUsername(){
    return $this->mail;
}