Аутентификация — это процесс идентификации правильного пользователя. CakePHP поддерживает три типа аутентификации.
-
FormAuthenticate — позволяет аутентифицировать пользователей на основе данных формы POST. Обычно это форма входа в систему, в которую пользователи вводят информацию. Это метод аутентификации по умолчанию.
-
BasicAuthenticate — позволяет аутентифицировать пользователей с помощью обычной HTTP-аутентификации.
-
DigestAuthenticate — позволяет аутентифицировать пользователей с помощью Digest HTTP-аутентификации.
FormAuthenticate — позволяет аутентифицировать пользователей на основе данных формы POST. Обычно это форма входа в систему, в которую пользователи вводят информацию. Это метод аутентификации по умолчанию.
BasicAuthenticate — позволяет аутентифицировать пользователей с помощью обычной HTTP-аутентификации.
DigestAuthenticate — позволяет аутентифицировать пользователей с помощью Digest HTTP-аутентификации.
Пример для FormAuthentication
Внесите изменения в файл config / rout.php, как показано в следующем коде.
конфиг / routes.php
<?php use Cake\Core\Plugin; use Cake\Routing\RouteBuilder; use Cake\Routing\Router; Router::defaultRouteClass('DashedRoute'); Router::scope('/', function (RouteBuilder $routes) { $routes->connect('/auth',['controller'=>'Authexs','action'=>'index']); $routes->connect('/login',['controller'=>'Authexs','action'=>'login']); $routes->connect('/logout',['controller'=>'Authexs','action'=>'logout']); $routes->fallbacks('DashedRoute'); }); Plugin::routes();
Измените код файла AppController.php, как показано в следующей программе.
SRC / Controller / AppController.php
<?php namespace App\Controller; use Cake\Controller\Controller; use Cake\Event\Event; use Cake\Controller\Component\AuthComponent; class AppController extends Controller{ public function initialize(){ parent::initialize(); $this->loadComponent('RequestHandler'); $this->loadComponent('Flash'); $this->loadComponent('Auth', [ 'authenticate' => [ 'Form' => [ 'fields' => ['username' => 'username', 'password' => 'password'] ] ], 'loginAction' => ['controller' => 'Authexs', 'action' => 'login'], 'loginRedirect' => ['controller' => 'Authexs', 'action' => 'index'], 'logoutRedirect' => ['controller' => 'Authexs', 'action' => 'login'] ]); $this->Auth->config('authenticate', [ AuthComponent::ALL => ['userModel' => 'users'], 'Form']); } public function beforeRender(Event $event){ if (!array_key_exists('_serialize', $this=>viewVars) && in_array($this->response=>type(), ['application/json', 'application/xml'])) { $this->set('_serialize', true); } } }
Создайте файл AuthexsController.php в src / Controller / AuthexsController.php . Скопируйте следующий код в файл контроллера.
SRC / Controller / AuthexsController.php
<?php namespace App\Controller; use App\Controller\AppController; use Cake\ORM\TableRegistry; use Cake\Datasource\ConnectionManager; use Cake\Event\Event; use Cake\Auth\DefaultPasswordHasher; class AuthexsController extends AppController{ var $components = array('Auth'); public function index(){ } public function login(){ if($this->request->is('post')){ $user = $this->Auth->identify(); if($user){ $this->Auth->setUser($user); return $this->redirect($this->Auth->redirectUrl()); } else $this->Flash->error('Your username or password is incorrect.'); } } public function logout(){ return $this->redirect($this->Auth->logout()); } } ?>
Создайте каталог Authexs в src / Template и в этом каталоге создайте файл View с именем login.ctp . Скопируйте следующий код в этот файл.
SRC / Template / Authexs / login.ctp
<?php echo $this->Form->create(); echo $this->Form->input('username'); echo $this->Form->input('password'); echo $this->Form->button('Submit'); echo $this->Form->end(); ?>
Создайте другой файл View с именем logout.ctp . Скопируйте следующий код в этот файл.
SRC / Template / Authexs / logout.ctp
You are successfully loggedout.
Создайте другой файл View с именем index.ctp . Скопируйте следующий код в этот файл.
SRC / Template / Authexs / index.ctp
You are successfully logged in. <?php echo $this->Html->link('logout',["controller" => "Authexs","action" => "logout"]); ?>
Выполните приведенный выше пример, посетив следующий URL.
HTTP: // локальный: 85 / CakePHP / авт
Выход
Поскольку аутентификация была реализована, и после того, как вы попытаетесь перейти по вышеуказанному URL, вы будете перенаправлены на страницу входа, как показано ниже.
После предоставления правильных учетных данных вы войдете в систему и будете перенаправлены на экран, как показано ниже.
После нажатия на ссылку выхода вы снова будете перенаправлены на экран входа.