我是FOSUserBundle的新手,几个小时以来我一直在努力解决这个错误。。。在网站上找不到合适的答案。
有人能帮我吗
这是我的子用户实体
<?php
// src/Blogger/BlogBundle/Entity/CommonUser.php
namespace BloggerBlogBundleEntity;
use DoctrineORMMapping as ORM;
use DoctrineCommonCollectionsArrayCollection;
use FOSUserBundleModelUser as BaseUser;
/**
* @ORMEntity(repositoryClass="BloggerBlogBundleEntityRepositoryCommonUserRepository")
* @ORMTable(name="CommonUser")
* @ORMHasLifecycleCallbacks
*/
class CommonUser extends BaseUser
{
/**
* @ORMOneToMany(targetEntity="Request", mappedBy="commonUser")
*/
protected $requests;
public function __construct()
{
parent::__construct();
$this->requests = new ArrayCollection();
}
/**
* @ORMId
* @ORMColumn(type="integer", nullable=false)
* @ORMGeneratedValue(strategy="AUTO")
*/
protected $id;
...
...
...
/**
* Get id
*
* @return integer
*/
public function getId()
{
return $this->id;
}
public function getSalt()
{
return '';
}
...
}
这也是request.php类
<?php
// src/Blogger/BlogBundle/Entity/Request.php
namespace BloggerBlogBundleEntity;
use DoctrineORMMapping as ORM;
use DoctrineCommonCollectionsArrayCollection;
use BloggerBlogBundleEntityRepositoryRequestRepository;
/**
* @ORMEntity(repositoryClass="BloggerBlogBundleEntityRepositoryrequestRepository")
* @ORMTable(name="request")
* @ORMHasLifecycleCallbacks
*/
class Request
{
/**
* @ORMOneToMany(targetEntity="Note", mappedBy="request")
*/
protected $notes;
public function __construct()
{
$this->notes = new ArrayCollection();
$this->setCreated(new DateTime());
$this->setUpdated(new DateTime());
}
/**
* @ORMId
* @ORMColumn(type="integer")
* @ORMGeneratedValue(strategy="AUTO")
*/
protected $id;
/**
* @ORMManyToOne(targetEntity="CommonUser", inversedBy="requests")
* @ORMJoinColumn(name="user_id", referencedColumnName="id")
*/
protected $commonUser;
/**
* @ORMColumn(type="text")
*/
protected $request;
....
....
....
/**
* Get id
*
* @return integer
*/
public function getId()
{
return $this->id;
}
....
....
....
}
这是我的安全文件
# app/config/security.yml
security:
encoders:
FOSUserBundleModelUserInterface: 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 }
当您从FOSUserBundle向提供的控制器注册时,存储在DB中的密码将使用500倍的SHA1和随机生成的salt进行加密。因此,如果您总是通过函数getSalt()返回",密码将永远不会匹配不要覆盖此功能
但是,您可以覆盖FOSUserBundle中的控制器,有关详细信息,请参阅官方文档。
public function getSalt()
{
return '';
}
只需尝试更新密码即可。在终端中输入:
php fos:user:change-password $username $password
其中CCD_ 2是用户名,CCD_。