0
我試圖使用Symfony文檔here中描述的序列化/ userialize方法來登錄用戶。Symfony登錄序列化/反序列化不工作,無效字符串
當我在ContextListener中轉儲令牌並嘗試反序列化字符串時,我得到一個無效字符串的錯誤。
用戶名字段實際上是電子郵件字段。
UserEntity
/**
* @ORM\Table(name="users")
* @ORM\Entity(repositoryClass="XXX\UserBundle\Repository\UserRepository")
* @ORM\HasLifecycleCallbacks()
* @UniqueEntity("username")
*/
class User extends AbstractEntity implements UserInterface, AdvancedUserInterface, \Serializable
{
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
/**
* @ORM\ManyToMany(
* targetEntity="XXX\UserBundle\Entity\UserRoles",
* inversedBy="users"
*)
* @ORM\JoinTable(
* name="users_user_role",
* joinColumns={@ORM\JoinColumn(name="user_id", referencedColumnName="id")},
* inverseJoinColumns={@ORM\JoinColumn(name="role_id", referencedColumnName="id")}
*)
*/
protected $roles;
/**
* @ORM\Column(name="password", type="string", length=64)
*/
protected $password;
/**
* @Assert\NotBlank()
* @Assert\Length(max=4096)
*/
protected $plainPassword;
/**
* @ORM\Column(name="enabled", type="boolean")
*/
protected $enabled = true;
/**
* @ORM\Column(name="locked", type="boolean")
*/
protected $locked = false;
/**
* @ORM\Column(name="expired", type="boolean")
*/
protected $expired = false;
/**
* @ORM\Column(name="expires_at", type="datetime", nullable=true)
*/
protected $expiresAt;
/**
* @ORM\Column(name="last_login", type="datetime", nullable=true)
*/
protected $lastLogin;
/**
* @ORM\Column(name="confirmation_token", type="string")
*/
protected $confirmationToken;
/**
* @ORM\Column(name="password_requested_at", type="datetime", nullable=true)
*/
protected $passwordRequestedAt;
/**
* @ORM\Column(name="credentials_expired", type="boolean")
*/
protected $credentialsExpired = false;
/**
* @ORM\Column(name="user_default_language", type="string")
*/
protected $userDefaultLanguage;
//getters and setters
public function isAccountNonExpired()
{
return $this->getExpired();
}
public function isAccountNonLocked()
{
return $this->getLocked();
}
public function isCredentialsNonExpired()
{
return;
}
public function isEnabled()
{
return $this->getEnabled();
}
/**
* @return string
*/
public function serialize()
{
return serialize([
$this->id,
$this->username,
$this->password,
$this->enabled,
]);
}
/**
* @param string $serialized
*/
public function unserialize($serialized)
{
list (
$this->id,
$this->username,
$this->password,
$this->enabled
) = $this->unserialize($serialized);
}
當我嘗試登錄我沒有得到任何只是ERR_EMPTY_RESPONSE
任何錯誤。但是當我從ContextListener::handle()
方法獲得令牌並試圖反序列化它時,它說該字符串是錯誤的。
所以它與序列化到這樣做,但我不知道/明白我做錯了......
它的工作,謝謝。 –