Symfony 4 : Kullanıcı Yönetimi ve Güvenlik

Taner Deliloğlu
2 min readDec 16, 2017

--

Kullanıcı sınıfını oluşturmadan önce güvenlik bileşenini projemize dahil etmemiz gerekmektedir. Bunun için aşağıdaki komutu çalıştırın.

=> composer require security

Kullanıcı Sınıfının Oluşturulması

Kullanıcı yönetimi için içerisinde id, username, password, email and isActive gibi temel özelliklerinin yer aldığı User isimli sınıfımızı oluşturmalıyız. Aşağıdaki komut sayesinde User Entity ve User Repository sınıfları otomatik olarak oluşturulmaktadır.

=> php bin/console make:entity User

Oluşturulan User sınıfını aşağıdaki gibi düzenleyiniz. @ORM\Table(name=”app_users”) içerisindeki app_users, veritabanınızda oluşturulacak olan kullanıcılar tablosunun ismidir. İstediğiniz şekilde farklı bir isim verebilirsiniz.

<?php
// src/Entity/User.php

namespaceAppEntity;
useDoctrineORMMapping as ORM;
useSymfonyComponentSecurityCoreUserUserInterface;
/**
* @ORM\Table(name=”app_users”)
* @ORM\Entity(repositoryClass=”App\Repository\UserRepository”)
*/
class User implements UserInterface, 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()
{
return array(‘ROLE_USER’);
}

public function eraseCredentials()
{
}

/** @see \Serializable::serialize() */
public function serialize()
{
return serialize(array(
$this->id,
$this->username,
$this->password,

// see section on salt below
// $this->salt,

));
}

/** @see \Serializable::unserialize() */
public function unserialize($serialized)
{
list($this->id, $this->username, $this->password,

// see section on salt below
// $this->salt

) = unserialize($serialized);
}
}

User sınıfını oluşturduktan sonra veritabanındaki değişiklikleri kayıt altına almak ve veritabanı şemasını güncellemek için aşağıdaki komutları sırasıyla çalıştırın.

=> php bin/console doctrine:migrations:diff
=> php bin/console doctrine:migrations:migrate

src/Migrations dizininde geçmişte yapılan tüm değişiklikleri görebilirsiniz. Veritabanı şemanızı eski sürümlere geri döndürebilirsiniz.

Güvenlik Konfigürasyonu

--

--