本章介紹有關 CakePHP 中可用的身份驗證過程的資訊。
身份驗證是識別正確使用者的過程。 CakePHP 支援三種類型的身份驗證。
FormAuthenticate - 它允許您根據表單 POST 資料對使用者進行驗證。通常,這是使用者輸入資訊的登入表單。這是預設的身份驗證方法。
BasicAuthenticate - 它允許您使用基本 HTTP 驗證來驗證使用者
DigestAuthenticate - 它允許您使用摘要式 HTTP 驗證對使用者進行驗證。
在 config/routes.php 檔案中進行更改,如下列程式碼所示。
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();
更改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' ] ]); } public function beforeFilter(Event $event) { $this->Auth->allow(['index','view']); $this->set('loggedIn', $this->Auth->user()); } }
在 src/Controller/AuthexsController.php 建立 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()); } } ?>
在src/Template 處建立一個目錄Authexs 並在該目錄下建立一個名為login.php 的ViewView
文件。將以下程式碼複製到該文件中。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(); ?>
建立另一個 View 文件,名稱為 logout.php。
將以下程式碼複製到該檔案中。src/Template/Authexs/logout.php
You are successfully logged out.
建立另一個 View 文件,名稱為 index.php。
將以下程式碼複製到該檔案中。src/Template/Authexs/index.php
You are successfully logged in. <?php echo $this->Html->link('logout',[ "controller" => "Authexs","action" => "logout" ]); ?>
透過造訪以下 URL 來執行上述範例。
http://localhost/cakephp4/auth
由於身份驗證已完成,一旦您嘗試訪問上述網址,您將被重定向到如下所示的登入頁面。
提供正確的憑證後,您將登入並重定向到如下所示的畫面。
點擊登出
連結後,您將再次重定向到登入畫面。以上是CakePHP 服務的詳細內容。更多資訊請關注PHP中文網其他相關文章!