gpt4 book ai didi

php - Symfony 身份验证(您不能从 EntityUserProvider 刷新用户)

转载 作者:行者123 更新时间:2023-12-05 01:20:47 25 4
gpt4 key购买 nike

身份验证后,当我输入正确的用户名/密码时,我被重定向到一个新页面(driverspace/dashboard)并出现此错误:

You cannot refresh a user from the EntityUserProvider that does not contain an identifier.
The user object has to be serialized with its own identifier mapped by Doctrine.

symfony 栏显示:“您未通过身份验证”..

这是我的 security.xml防火墙:

    driver_firewall:
pattern: ^/driver
form_login:
provider: user_db
login_path: /driver/login
check_path: /driver/login_check
remember_me: true
always_use_default_target_path: false
default_target_path: /driverspace/dashboard
target_path_parameter: _target_path
use_referer: false
logout:
path: /driver/logout
target: /
remember_me:
key: MiPassphrase
lifetime: 1800
path: /.*
domain: ~
security: true
anonymous: true
main:
pattern: ^/
form_login:
provider: fos_userbundle
csrf_provider: form.csrf_provider
logout: true
anonymous: true

PS:我有 2 种用户类型,所以我使用 fos 来管理一种,使用基本身份验证来管理另一种,编辑:驱动实体

class Driver extends BaseUser implements \FOS\UserBundle\Model\UserInterface
{
/**
* @var integer
*
* @ORM\Column(name="id_driver", type="integer", nullable=false)
* @ORM\Id
* @ORM\GeneratedValue(strategy="IDENTITY")
*/
private $idDriver;

/**
* @var string
*
* @ORM\Column(name="fname_drive", type="string", length=30, nullable=false)
*/
private $fnameDrive;

/**
* @var string
*
* @ORM\Column(name="lname_driver", type="string", length=30, nullable=false)
*/
private $lnameDriver;

/**
* @var string
*
* @ORM\Column(name="phone_driver", type="string", length=15, nullable=false)
*/
private $phoneDriver;

/**
* @var float
*
* @ORM\Column(name="lat_driver", type="float", precision=10, scale=0, nullable=true)
*/
private $latDriver;

/**
* @var float
*
* @ORM\Column(name="lon_driver", type="float", precision=10, scale=0, nullable=true)
*/
private $lonDriver;

/**
* @var integer
*
* @ORM\Column(name="activenow", type="integer", nullable=true)
*/
private $activenow;

/**
* @var \Company
*
* @ORM\ManyToOne(targetEntity="Company")
* @ORM\JoinColumns({
* @ORM\JoinColumn(name="company_id", referencedColumnName="id_company")
* })
*/
private $company;

/**
* @var \Doctrine\Common\Collections\Collection
*
* @ORM\ManyToMany(targetEntity="Car", inversedBy="idDriver")
* @ORM\JoinTable(name="driver_car",
* joinColumns={
* @ORM\JoinColumn(name="id_driver", referencedColumnName="id_driver")
* },
* inverseJoinColumns={
* @ORM\JoinColumn(name="id_car", referencedColumnName="id_car")
* }
* )
*/
private $idCar;

最佳答案

我通过以下方式解决了这个问题:

1- 将 idDriver 更改为 id ,因为驱动程序类扩展了 BaseUSer

2- 添加:

 public function serialize() {
return serialize($this->id);
}

public function unserialize($data) {
$this->id = unserialize($data);
}

我希望这个解决方案能帮助到别人

关于php - Symfony 身份验证(您不能从 EntityUserProvider 刷新用户),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26801055/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com