CakePHP - Layanan
Bab ini membahas informasi tentang proses otentikasi yang tersedia di CakePHP.
Autentikasi
Otentikasi adalah proses mengidentifikasi pengguna yang benar. CakePHP mendukung tiga jenis otentikasi.
FormAuthenticate- Ini memungkinkan Anda untuk mengotentikasi pengguna berdasarkan data formulir POST. Biasanya, ini adalah formulir login tempat pengguna memasukkan informasi. Ini adalah metode otentikasi default.
BasicAuthenticate - Ini memungkinkan Anda untuk mengotentikasi pengguna menggunakan otentikasi HTTP Dasar
DigestAuthenticate - Ini memungkinkan Anda untuk mengotentikasi pengguna menggunakan otentikasi HTTP Digest.
Contoh untuk FormAuthentication
Lakukan perubahan pada file config / routes.php seperti yang ditunjukkan pada kode berikut.
config/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();
Ubah kode file AppController.php seperti yang ditunjukkan pada program berikut.
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'
]
]);
}
public function beforeFilter(Event $event) {
$this->Auth->allow(['index','view']);
$this->set('loggedIn', $this->Auth->user());
}
}
Membuat AuthexsController.php mengajukan di src/Controller/AuthexsController.php. Salin kode berikut di file pengontrol.
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());
}
}
?>
Buat direktori Authexs di src/Template dan di bawah direktori itu buat View file bernama login.php. Salin kode berikut di file itu.
src/Template/Authexs/login.php
<?php
echo $this->Form->create();
echo $this->Form->control('username');
echo $this->Form->control('password');
echo $this->Form->button('Submit');
echo $this->Form->end();
?>
Buat yang lain View file bernama logout.php. Salin kode berikut di file itu.
src/Template/Authexs/logout.php
You are successfully logged out.
Buat yang lain View file bernama index.php. Salin kode berikut di file itu.
src/Template/Authexs/index.php
You are successfully logged in.
<?php
echo $this->Html->link('logout',[
"controller" => "Authexs","action" => "logout"
]);
?>
Jalankan contoh di atas dengan mengunjungi URL berikut.
http: // localhost / cakephp4 / auth
Keluaran
Saat otentikasi telah diterapkan, dan setelah Anda mencoba mengunjungi URL di atas, Anda akan diarahkan ke halaman login seperti yang ditunjukkan di bawah ini.

Setelah memberikan kredensial yang benar, Anda akan masuk dan diarahkan ke layar seperti yang ditunjukkan di bawah ini.

Setelah mengklik logout link, Anda akan diarahkan ke layar login lagi.