Как использовать компоненты авторизации в CakePHP?

Пользователь

от stephania , в категории: PHP , 2 года назад

Как использовать компоненты авторизации в CakePHP?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

1 ответ

Пользователь

от vladimir , 2 года назад

@stephania 

Для использования компонентов авторизации в CakePHP нужно выполнить следующие шаги:

  1. Подключите компонент авторизации в вашем контроллере:
1
2
3
4
5
6
7
8
9
// src/Controller/YourController.php
namespace AppController;

use CakeControllerController;

class YourController extends Controller
{
    public $components = ['Auth'];
}


  1. Настройте компонент авторизации в файле src/Controller/AppController.php:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
// src/Controller/AppController.php
namespace AppController;

use CakeControllerController;

class AppController extends Controller
{
    public $components = [
        'Auth' => [
            'loginAction' => [
                'controller' => 'Users',
                'action' => 'login'
            ],
            'authError' => 'You are not authorized to access that location.',
            'authenticate' => [
                'Form' => [
                    'fields' => ['username' => 'email', 'password' => 'password']
                ]
            ]
        ]
    ];
}


Здесь мы настраиваем несколько параметров компонента:

  • loginAction определяет, куда пользователь будет перенаправлен при попытке доступа к защищенному ресурсу, если он не авторизован.
  • authError определяет сообщение об ошибке, которое будет показано пользователю при попытке доступа к защищенному ресурсу, если он не авторизован.
  • authenticate определяет, какой аутентификационный объект должен использоваться для проверки идентификационных данных пользователя. Здесь мы используем Form объект, который проверяет имя пользователя и пароль на основе значений, введенных в форму авторизации.
  1. Защитите нужный контроллер или действие с помощью компонента авторизации:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
// src/Controller/YourController.php
namespace AppController;

use CakeControllerController;

class YourController extends Controller
{
    public function beforeFilter(CakeEventEventInterface $event)
    {
        parent::beforeFilter($event);
        $this->Authorization->authorize();
    }
}


Вызов $this->Authorization->authorize() позволяет проверить, имеет ли пользователь права доступа к защищенному ресурсу. Если пользователь не авторизован, он будет перенаправлен на страницу логина.

  1. Создайте страницу логина и форму для ввода идентификационных данных пользователя.


Эти шаги позволят вам использовать компонент авторизации в CakePHP и защитить ваши ресурсы от несанкционированного доступа.