Od jakiegoś czasu męcze SF3, a dokładnie autoryzacje tylko nic mi nie idzie. Mam taki kod:
AppBundle\Entity\User
<?php namespace AppBundle\Entity; use Doctrine\ORM\Mapping as ORM; use Symfony\Component\Security\Core\User\AdvancedUserInterface; /** * @ORM\Table(name="app_users") * @ORM\Entity(repositoryClass="AppBundle\Repository\UserRepository") */ class User implements AdvancedUserInterface, \Serializable { /** * @ORM\Column(type="integer") * @ORM\Id * @ORM\GeneratedValue(strategy="AUTO") */ private $id; /** * @ORM\Column(type="string", length=25, unique=true) */ private $username; /** * @ORM\Column(type="string", length=64) */ private $password; /** * @ORM\Column(type="string", length=60, unique=true) */ private $email; /** * @ORM\Column(name="is_active", type="boolean") */ private $isActive; public function __construct() { $this->isActive = true; // may not be needed, see section on salt below // $this->salt = md5(uniqid('', true)); } public function getUsername() { return $this->username; } public function getSalt() { // you *may* need a real salt depending on your encoder // see section on salt below return null; } public function getPassword() { return $this->password; } public function getRoles() { } public function eraseCredentials() { } public function isAccountNonExpired() { return true; } public function isAccountNonLocked() { return true; } public function isCredentialsNonExpired() { return true; } public function isEnabled() { return $this->isActive; } /** @see \Serializable::serialize() */ { $this->id, $this->username, $this->password, $this->isActive, // see section on salt below // $this->salt, )); } /** @see \Serializable::unserialize() */ { list ( $this->id, $this->username, $this->password, $this->isActive, // see section on salt below // $this->salt } }
security.yml
Kod
# app/config/security.yml
security:
encoders:
AppBundle\Entity\User:
algorithm: bcrypt
# ...
providers:
our_db_provider:
entity:
class: AppBundle:User
property: username
# if you're using multiple entity managers
# manager_name: customer
firewalls:
main:
pattern: ^/
http_basic: ~
provider: our_db_provider
# ...
security:
encoders:
AppBundle\Entity\User:
algorithm: bcrypt
# ...
providers:
our_db_provider:
entity:
class: AppBundle:User
property: username
# if you're using multiple entity managers
# manager_name: customer
firewalls:
main:
pattern: ^/
http_basic: ~
provider: our_db_provider
# ...
DefaultController
<?php namespace AppBundle\Controller; use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route; use Symfony\Bundle\FrameworkBundle\Controller\Controller; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; class DefaultController extends Controller { /** * @Route("/", name="homepage") */ public function indexAction(Request $request) { // replace this example code with whatever you need return $this->render('default/index.html.twig', [ ]); } /** * @Route("/admin") */ public function adminAction() { return new Response('<html><body>Admin page!</body></html>'); } }
ładuje się przez przeglądarkę na adres /admin, po zalogowaniu powinno mi pokazać Admin Page! niestety u mnie po podaniu prawidłowych danych admin/admin i kliknięciu zaloguj się, ponownie pokazuje się formularz logowania. Co robię nie tak? Wszystko robiłem zgodnie z tym poradnikiem https://symfony.com/doc/3.4/security/entity_provider.html
Od 3h nad tym siedzę i brak efektu
