Bab ini membincangkan maklumat tentang proses pengesahan yang tersedia dalam CakePHP.
Pengesahan ialah proses mengenal pasti pengguna yang betul. CakePHP menyokong tiga jenis pengesahan.
FormAuthenticate − Ia membolehkan anda untuk mengesahkan pengguna berdasarkan data POST borang. Biasanya, ini adalah borang log masuk yang pengguna masukkan maklumat. Ini ialah kaedah pengesahan lalai.
BasicAuthenticate − Ia membolehkan anda mengesahkan pengguna menggunakan pengesahan HTTP Asas
DigestAuthenticate − Ia membolehkan anda mengesahkan pengguna menggunakan pengesahan HTTP Digest.
Buat perubahan dalam fail config/routes.php seperti yang ditunjukkan dalam kod 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();
Tukar kod fail AppController.php seperti yang ditunjukkan dalam 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()); } }
Buat fail AuthexsController.php di src/Controller/AuthexsController.php. Salin kod berikut dalam fail pengawal.
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 cipta fail View yang dipanggil login.php. Salin kod berikut dalam fail 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 Lihat fail lain bernama logout.php. Salin kod berikut dalam fail itu.
src/Template/Authexs/logout.php
You are successfully logged out.
Buat Lihat fail lain bernama index.php. Salin kod berikut dalam fail itu.
src/Template/Authexs/index.php
You are successfully logged in. <?php echo $this->Html->link('logout',[ "controller" => "Authexs","action" => "logout" ]); ?>
Laksanakan contoh di atas dengan melawati URL berikut.
http://localhost/cakephp4/auth
Memandangkan pengesahan telah dilaksanakan, dan sebaik sahaja anda cuba melawati URL di atas, anda akan dialihkan ke halaman log masuk seperti yang ditunjukkan di bawah.
Selepas memberikan bukti kelayakan yang betul, anda akan dilog masuk dan diubah hala ke skrin seperti yang ditunjukkan di bawah.
Selepas mengklik pada pautan log keluar, anda akan diubah hala ke skrin log masuk sekali lagi.
Atas ialah kandungan terperinci Perkhidmatan CakePHP. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!