Symfony Framework Авторизация. Подключение к БД MSSQL получение данных и аутентификация tutorial 6

returnt

21.01.2015

startSymfony

Работу с базой данных хотелось бы начать с програмки которую я буду использовать для работы с БД. Heidisql данная программа поможет нам удобно работать с mysql . Прежде всего создадим базу данных и таблицу с пользователями как это сделать можно посмотреть в обзоре ниже.

Обязательно не забываем конфигурировать файл с настройками подключения к БД. ~\symfony\www\app\config\parameters.yml Здесь мы должны будем сделать следующие настройки указать имя БД пользователя и пароль возможно понадобится сменить хост.

  1. parameters:
  2.     database_driver:   pdo_mysql
  3.     database_host:     127.0.0.1
  4.     database_port:     ~
  5.     database_name:     symfony5
  6.     database_user:     symfony5
  7.     database_password: symfony5
  8.     mailer_transport:  smtp
  9.     mailer_host:       127.0.0.1
  10.     mailer_user:       ~
  11.     mailer_password:   ~
  12.     locale:            en
  13.     secret:            ThisTokenIsNotSoSecretChangeIt

Далее при поможи «доктайма» будем использовать менеджера для этого нужно создать в папке проекта папку Entity в ней создадим файл интерфейса описания таблицы юзер. ~\symfony\www\src\Login\LoginBundle\Entity\Users.php В данном файле нужно поместить следующий код который опишет таблицу с пользователями нашей БД.

  1. <?php
  2. namespace Login\LoginBundle\Entity;
  3. use Doctrine\ORM\Mapping as ORM;
  4. /**
  5.  * @ORM\Users
  6.  * @ORM\Table(name=»users»)
  7.  */
  8. class Users{
  9.      /**
  10.      * @var string
  11.      */
  12.     private $userName;
  13.     /**
  14.      * @var string
  15.      */
  16.     private $firstName;
  17.     /**
  18.      * @var string
  19.      */
  20.     private $password;
  21.     /**
  22.      * @var integer
  23.      */
  24.     private $userid;
  25.     /**
  26.      * Set userName
  27.      *
  28.      * @param string $userName
  29.      * @return Users
  30.      */
  31.     public function setUserName($userName)
  32.     {
  33.         $this->userName = $userName;
  34.         return $this;
  35.     }
  36.     /**
  37.      * Get userName
  38.      *
  39.      * @return string
  40.      */
  41.     public function getUserName()
  42.     {
  43.         return $this->userName;
  44.     }
  45.     /**
  46.      * Set firstName
  47.      *
  48.      * @param string $firstName
  49.      * @return Users
  50.      */
  51.     public function setFirstName($firstName)
  52.     {
  53.         $this->firstName = $firstName;
  54.         return $this;
  55.     }
  56.     /**
  57.      * Get firstName
  58.      *
  59.      * @return string
  60.      */
  61.     public function getFirstName()
  62.     {
  63.         return $this->firstName;
  64.     }
  65.     /**
  66.      * Set password
  67.      *
  68.      * @param string $password
  69.      * @return Users
  70.      */
  71.     public function setPassword($password)
  72.     {
  73.         $this->password = $password;
  74.         return $this;
  75.     }
  76.     /**
  77.      * Get password
  78.      *
  79.      * @return string
  80.      */
  81.     public function getPassword()
  82.     {
  83.         return $this->password;
  84.     }
  85.     /**
  86.      * Get userid
  87.      *
  88.      * @return integer
  89.      */
  90.     public function getUserid()
  91.     {
  92.         return $this->userid;
  93.     }
  94. }

Вот привожу пример запроса на генерацию таблицы с пользователями.

— Дамп структуры для таблица symfony5.user

CREATE TABLE IF NOT EXISTS `user` (

`id` int(11) NOT NULL AUTO_INCREMENT,

`username` varchar(255) COLLATE utf8_unicode_ci NOT NULL,

`password` varchar(255) COLLATE utf8_unicode_ci NOT NULL,

`salt` varchar(255) COLLATE utf8_unicode_ci NOT NULL,

`email` varchar(255) COLLATE utf8_unicode_ci NOT NULL,

`rempasstocen` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,

`blak_list` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,

PRIMARY KEY (`id`),

UNIQUE KEY `Индекс 2` (`username`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

Теперь самое время разобрать работу с контроллером.  Для начала внесём коррективы в ранее созданный контроллера авторизации следующим кодом

  1. public function indexAction(Request $request) {
  2.         $username = $request->get(‘usname’);
  3.         $password = $request->get(‘pass’);
  4.         $em = $this->getDoctrine()->getEntityManager();
  5.         $repository = $em->getRepository(‘LoginLoginBundle:Users’);
  6.         $user = $repository->findOneBy(array(‘userName’=>$username, ‘password’=>$password));
  7.         if($user){
  8.             return $this->render(‘LoginLoginBundle:Auth:Auth.html.php’, array(‘username’=>$username));
  9.         }  else {
  10.             return $this->render(‘LoginLoginBundle:Auth:Auth.html.php’, array(‘username’=>’Error’));
  11.         }
  12.         return $this->render(‘LoginLoginBundle:Auth:Auth.html.php’);
  13.     }

Подробно о работе кода смотрим в обзоре ниже.


  • returnt

    Все новые файлы и папки были созданы в ручном режиме! Без использования генераторов и композера!