I got an error when I want to open a simple page. This is a complete error:
ContextErrorException: Catchable Fatal Error: An object of class __PHP_Incomplete_Class cannot be converted to a string in / Applications / mampstack -5.4.20-0 / apache2 / htdocs / engelsvandenbroecke / vendor / symfony / symfony / src / Symfony / Component / Security / Core / Authentication /Token/AbstractToken.php line 70
What I did in my symfony project:
- Creating Entities from the Database
- Change user object for security
- Edit security.yml
- Two data files added
This is my user class:
<?php namespace Beachteam\BeachteamBundle\Entity; use Doctrine\ORM\Mapping as ORM; use Symfony\Component\Security\Core\User\AdvancedUserInterface; class User implements AdvancedUserInterface { private $username; private $password; private $salt; private $firstname; private $surname; private $email; private $token; private $created; private $id; private $role; private $plainPassword; public function __construct() { $this->salt = base_convert(sha1(uniqid(mt_rand(), true)), 16, 36); } public function setUsername($username) { $this->username = $username; return $this; } public function getUsername() { return $this->username; } public function setPassword($password) { $this->password = $password; return $this; } public function getPassword() { return $this->password; } public function setSalt($salt) { $this->salt = $salt; return $this; } public function getSalt() { return $this->salt; } public function setFirstname($firstname) { $this->firstname = $firstname; return $this; } public function getFirstname() { return $this->firstname; } public function setSurname($surname) { $this->surname = $surname; return $this; } public function getSurname() { return $this->surname; } public function setEmail($email) { $this->email = $email; return $this; } public function getEmail() { return $this->email; } public function setToken($token) { $this->token = $token; return $this; } public function getToken() { return $this->token; } public function setCreated($created) { $this->created = $created; return $this; } public function getCreated() { return $this->created; } public function getId() { return $this->id; } public function setRoles(\Beachteam\BeachteamBundle\Entity\Role $role = null) { $this->role = $role; return $this; } public function getRoles() { return array($this->role->getName()); } public function eraseCredentials() { $this->setPlainPassword(null); } public function getPlainPassword() { return $this->plainPassword; } public function setPlainPassword($plainPassword) { $this->plainPassword = $plainPassword; } public function isAccountNonExpired() { return true; } public function isAccountNonLocked() { return true; } public function isCredentialsNonExpired() { return true; } public function isEnabled() { return true; } }
My security.yml:
security: encoders: Beachteam\BeachteamBundle\Entity\User: algorithm: bcrypt cost: 15 role_hierarchy: ROLE_SUPER_ADMIN: ROLE_ADMIN providers: users: entity: class: BeachteamBundle:User property: username firewalls: dev: pattern: ^/(_(profiler|wdt)|css|images|js)/ security: false secured_area: pattern: ^/ anonymous: ~ form_login: login_path: beach_team_loginpage check_path: beach_team_logincheck username_parameter: login[username] password_parameter: login[password] always_use_default_target_path: true default_target_path: beach_team_adminpage logout: path: beach_team_logout target: beach_team_loginpage remember_me: key: "%secret%" lifetime: 31536000
source share