我刚刚在Symfony 4项目中发现了一些困扰。
我没有问题登录到我的帐户。但是奇怪的是,一旦我进入某个页面,然后如果我注销后就出现此错误:
注意:unserialize():在偏移7899为17631字节时发生错误
这是我的用户实体:
/**
* @ORM\Entity(repositoryClass="App\Repository\UserRepository")
* @ORM\HasLifecycleCallbacks()
* @UniqueEntity(
* fields = {"email"},* message = "Cette adresse email a déjà été utilisée."
* )
*/
class User implements UserInterface
{
/**
* @ORM\Id()
* @ORM\GeneratedValue()
* @ORM\Column(type="integer")
*/
private $id;
/**
* Adresse email de l'utilisateur
* @ORM\Column(type="string",length=180,unique=true)
* @Assert\NotBlank()
* @Assert\Email(message="Veuillez renseigner un email valide")
*/
private $email;
/**
* Rôles de l'utilisateur
* @ORM\Column(type="json")
*/
private $roles = [];
/**
* Mot de passe de l'utilisateur
* @var string The hashed password
* @ORM\Column(type="string")
* @Assert\Length(
* min = 4,* minmessage = "Votre mot de passe doit contenir au moins {{limit}}",* )
*/
private $password;
/**
* Confirmation du mot de passe de l'utilisateur
* @Assert\EqualTo(propertyPath="password",message="Vous n'avez pas correctement confirmé votre mot de passe")
*/
public $passwordConfirm;
/**
* Nom de l'utilisateur
* @ORM\Column(type="string",length=255)
* @Assert\Length(
* min = 1,* max = 20,* minmessage = "Votre nom doit contenir au moins {{limit}} caractère",* maxMessage = "Votre nom ne peut pas contenir plus de {{limit}} caractères"
* )
* @Assert\NotBlank
*/
private $nom;
/**
* Prénom de l'utilisateur
* @ORM\Column(type="string",* minmessage = "Votre prénom doit contenir au moins {{limit}} caractère",* maxMessage = "Votre prénom ne peut pas contenir plus de {{limit}} caractères"
* )
* @Assert\NotBlank
*/
private $prenom;
/**
* Slug de l'utilisateur
* @ORM\Column(type="string",length=255)
*/
private $slug;
/**
* Absences de l'utilisateur
* @ORM\OneToMany(targetEntity="App\Entity\Absence",mappedBy="user",orphanRemoval=true,cascade={"persist","remove"})
*/
private $absences;
/**
* Service de l'utilisateur
* @ORM\ManyToOne(targetEntity="App\Entity\GroupeValidateurs",inversedBy="users")
* @ORM\JoinColumn(nullable=true)
*/
private $groupe;
/**
* Soldes des congés de l'utilisateur
* @ORM\OneToMany(targetEntity="App\Entity\SoldeConges",fetch="EAGER","remove"})
*/
private $soldeConges;
/**
* Feuille de congés de l'utilisateur
* @ORM\OneToOne(targetEntity="App\Entity\FeuilleConge",inversedBy="user","remove"})
*/
private $feuilleConge;
/**
* Avatar de l'utilisateur
* @ORM\OneToOne(targetEntity="App\Entity\Avatar","remove"})
*/
private $avatar;
/**
* Profession de l'utilisateur
* @ORM\Column(type="string",length=255,nullable = true)
* @Assert\NotBlank
*/
private $profession;
/**
* Date de demande de réinitialisation du mot de passe de l'utilisateur
* @ORM\Column(type="datetime",nullable=true)
*/
private $passwordRequestedAt;
/**
* Token de réinitialisation du mot de passe de l'utilisateur
* @ORM\Column(type="string",nullable=true)
*/
private $token;
/**
* Ordres de mission de l'utilisateur
* @ORM\OneToMany(targetEntity="App\Entity\OrdreMission",mappedBy="user")
*/
private $ordreMissions;
/**
* Signature de l'utilisateur
* @ORM\OneToOne(targetEntity="App\Entity\Signature","remove"})
*/
private $signature;
/**
* @ORM\OneToMany(targetEntity="App\Entity\Validateur",mappedBy="validateur",cascade={"persist"})
*/
private $validateurs;
/**
* @ORM\OneToMany(targetEntity="App\Entity\AbsencesPrevision",orphanRemoval=true)
*/
private $absencesPrevisions;
/**
* @ORM\Column(type="string",length=255)
*/
private $hexColor;
/**
* @ORM\Column(type="boolean")
*/
private $autoValidation = false;
/**
* @Assert\Expression(
* "not (this.getautovalidation() == true and this.getSuppleant() != null)",* message="Vous devez choisir entre l'auto-validation et avoir un suppléant"
* )
* @ORM\ManyToOne(targetEntity="App\Entity\User",inversedBy="delegues")
*/
private $suppleant;
/**
* @ORM\OneToMany(targetEntity="App\Entity\User",mappedBy="suppleant")
*/
private $delegues;
/**
* @ORM\Column(type="boolean")
*/
private $activeMails = true;
/**
* @ORM\ManyToOne(targetEntity="App\Entity\Entreprise",inversedBy="users")
* @ORM\JoinColumn(nullable=false)
*/
private $entreprise;
我在互联网上看过,但没有发现与我的问题相符的内容。我绝不要求在我的代码中反序列化我的实体
更新:
这是我的 security.yaml :
security:
always_authenticate_before_granting: true
encoders:
App\Entity\User:
algorithm: auto
# https://symfony.com/doc/current/security.html#where-do-users-come-from-user-providers
providers:
in_memory: { memory: ~ }
# used to reload user from session & other features (e.g. switch_user)
in_database:
entity:
class: App\Entity\User
property: email
firewalls:
dev:
pattern: ^/(_(profiler|wdt)|css|images|js)/
security: false
main:
anonymous: true
provider: in_database
form_login:
login_path: account_login
check_path: account_login
default_target_path: home
logout:
path: account_logout
target: account_login
# activate different ways to authenticate
# https://symfony.com/doc/current/security.html#firewalls-authentication
# https://symfony.com/doc/current/security/impersonating_user.html
# switch_user: true
# Easy way to control access for large sections of your site
# Note: Only the *first* access control that matches will be used
access_control:
- {path : /login,roles: IS_AUTHENTICATED_ANONYMOUSLY }
- {path : /register,roles: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: /requete,roles: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/reset,roles: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/,roles: ROLE_USER }
- { path: ^/chef-service,roles: ROLE_CHEF_SERVICE }
- { path: ^/validateur,roles: [ROLE_VALIDATEUR,ROLE_SUPPLEANT] }
- { path: ^/super-validateur,roles: ROLE_SUPER_VALIDATEUR }
- { path: ^/rh,roles: ROLE_RH }
- { path: ^/admin,roles: ROLE_ADMIN }
我意识到我在某些页面上也遇到此错误。因此,我必须刷新页面,这会将我重定向到登录页面。我将进行连接,这次它将使我回到正确的页面,并且没有错误。但是,如果我再回去,那又会犯错。
PS:请原谅我英语不好,我是法语