I'm new to FOSUserBundle and it's some hours that i'm struggling with this error...and can't find appropriate answer in the site.
can anyone help me plz?:-*
this is my child user entity
<?php
// src/Blogger/BlogBundle/Entity/CommonUser.php
namespace Blogger\BlogBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
use Doctrine\Common\Collections\ArrayCollection;
use FOS\UserBundle\Model\User as BaseUser;
/**
* @ORM\Entity(repositoryClass="Blogger\BlogBundle\Entity\Repository\CommonUserRepository")
* @ORM\Table(name="CommonUser")
* @ORM\HasLifecycleCallbacks
*/
class CommonUser extends BaseUser
{
/**
* @ORM\OneToMany(targetEntity="Request", mappedBy="commonUser")
*/
protected $requests;
public function __construct()
{
parent::__construct();
$this->requests = new ArrayCollection();
}
/**
* @ORM\Id
* @ORM\Column(type="integer", nullable=false)
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
...
...
...
/**
* Get id
*
* @return integer
*/
public function getId()
{
return $this->id;
}
public function getSalt()
{
return '';
}
...
}
and also this is the request.php class
<?php
// src/Blogger/BlogBundle/Entity/Request.php
namespace Blogger\BlogBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
use Doctrine\Common\Collections\ArrayCollection;
use Blogger\BlogBundle\Entity\Repository\RequestRepository;
/**
* @ORM\Entity(repositoryClass="Blogger\BlogBundle\Entity\Repository\requestRepository")
* @ORM\Table(name="request")
* @ORM\HasLifecycleCallbacks
*/
class Request
{
/**
* @ORM\OneToMany(targetEntity="Note", mappedBy="request")
*/
protected $notes;
public function __construct()
{
$this->notes = new ArrayCollection();
$this->setCreated(new \DateTime());
$this->setUpdated(new \DateTime());
}
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
/**
* @ORM\ManyToOne(targetEntity="CommonUser", inversedBy="requests")
* @ORM\JoinColumn(name="user_id", referencedColumnName="id")
*/
protected $commonUser;
/**
* @ORM\Column(type="text")
*/
protected $request;
....
....
....
/**
* Get id
*
* @return integer
*/
public function getId()
{
return $this->id;
}
....
....
....
}
and this is my security file
# app/config/security.yml
security:
encoders:
FOS\UserBundle\Model\UserInterface: sha512
role_hierarchy:
ROLE_ADMIN: ROLE_USER
ROLE_SUPER_ADMIN: ROLE_ADMIN
providers:
fos_userbundle:
id: fos_user.user_provider.username
firewalls:
main:
pattern: ^/
form_login:
provider: fos_userbundle
csrf_provider: form.csrf_provider
logout: true
anonymous: true
access_control:
- { path: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/register, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/resetting, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/admin/, role: ROLE_ADMIN }
When you register with the provided controller from FOSUserBundle the password stored in DB is encrypted with 500 times SHA1 and the random generated salt. So if you always return "" by the function getSalt() the password will never match. do not override this function.
you can however overwrite the Controllers in FOSUserBundle, more about that in the offical documentation .
public function getSalt()
{
return '';
}
Just try to update the password. In the terminal enter:
php fos:user:change-password $username $password
where $user
is the user name and $password
the new password.
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.