FOSUserBundle: unrecognized field: username

First of all, I know that SO is full of such questions, but I tried to combine different configuration values ​​according to these answers without any luck.

I use FOSUserBundle with my own User class and when I submit the login form I get this error:

Unrecognized field: username

Here are a few bits of my code:

doctrine: auto_generate_proxy_classes: "%kernel.debug%" naming_strategy: doctrine.orm.naming_strategy.underscore auto_mapping: true # mappings: # FOSUserBundle: ~ fos_user: service: mailer: fos_user.mailer.twig_swift db_driver: orm firewall_name: main user_class: AppBundle\Entity\User 

Some tested options include setting auto_mapping: false and / or uncommenting mappings.FOSUserBundle: ~

This is my user class:

 <?php namespace AppBundle\Entity; use Symfony\Component\Security\Core\User\UserInterface; use Symfony\Component\Validator\Constraints as Assert; use FOS\UserBundle\Model\User as BaseUser; use Doctrine\Common\Collections\ArrayCollection; use Doctrine\ORM\Mapping as ORM; /** * AppBundle\Entity\User * * @ORM\Entity * @ORM\Table(name="user") */ class User extends BaseUser implements UserInterface { const ROLE_DEFAULT = 'ROLE_ADMIN'; /** * @ORM\Id * @ORM\Column(type="integer") * @ORM\GeneratedValue(strategy="AUTO") */ protected $id; /** * @ORM\Column(type="string", length=100) */ protected $name; /** * @ORM\Column(type="string", length=40) * @Assert\Email() */ protected $login; /** * @ORM\Column(type="string", length=255) */ protected $password; /** * @ORM\Column(type="string", length=255) */ protected $salt; /** * @ORM\Column(type="array", length=255) */ protected $roles; /** * Método requerido por la interfaz UserInterface */ public function equals(\Symfony\Component\Security\Core\User\UserInterface $user) { return $this->getLogin() == $user->getLogin(); } /** * Método requerido por la interfaz UserInterface */ public function eraseCredentials() { } /** * Método requerido por la interfaz UserInterface */ public function getUsername() { return $this->getLogin(); } public function __toString() { return $this->getName(); } /** * Get id * * @return integer */ public function getId() { return $this->id; } /** * Set name * * @param string $name */ public function setName($name) { $this->name = $name; } /** * Get name * * @return string */ public function getName() { return $this->name; } /** * Set login * * @param string $login */ public function setLogin($login) { $this->login = $login; } /** * Get login * * @return string */ public function getLogin() { return $this->login; } /** * Set password * * @param string $password */ public function setPassword($password) { $this->password = $password; } /** * Get salt * * @return string */ public function getSalt() { return $this->salt; } /** * Set salt * * @param string $salt */ public function setSalt($salt) { $this->salt = $salt; } /** * Get password * * @return string */ public function getPassword() { return $this->password; } /** * Adds a role to the user. * * @param string $role */ public function addRole($role) { $role = strtoupper($role); if ($role === static::ROLE_DEFAULT) { return; } if (!in_array($role, $this->roles, true)) { $this->roles[] = $role; } } /** * Returns the user roles * * Implements SecurityUserInterface * * @return array The roles */ public function getRoles() { $roles = $this->roles; foreach ($this->getGroups() as $group) { $roles = array_merge($roles, $group->getRoles()); } // we need to make sure to have at least one role $roles[] = static::ROLE_DEFAULT; return array_unique($roles); } /** * Set roles * * @param string $roles */ public function setRoles(array $roles) { $this->roles = $roles; } /** * Never use this to check if this user has access to anything! * * Use the SecurityContext, or an implementation of AccessDecisionManager * instead, eg * * $securityContext->isGranted('ROLE_USER'); * * @param string $role * @return Boolean */ public function hasRole($role) { return in_array(strtoupper($role), $this->getRoles(), true); } } 

The input ( layout.html.twig actually) the template has been redefined and appears to display correctly, my versions are:

  • Symonfy: Symfony version 2.8.2 - application / dev / debug
  • "friendsofsymfony / user-bundle": "^ 1.3"

console doctrine:schema:update was executed and it does not detect any changes, although the username Canal or email does not exist in the database table.

thanks

+5
source share
1 answer

With FOSUserBundle 1.3.x, you should extend FOS\UserBundle\Entity\User instead of FOS\UserBundle\Model\User (see http://symfony.com/doc/1.3.x/bundles/FOSUserBundle/index.html#a- doctrine-orm-user-class ).

+1
source

Source: https://habr.com/ru/post/1240849/


All Articles