この章では、CakePHP で利用できる認証プロセスに関する情報を扱います。
認証は、正しいユーザーを識別するプロセスです。 CakePHP は 3 種類の認証をサポートしています。
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 という View ファイルを作成します。そのファイルに次のコードをコピーします。
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(); ?>
logout.php. という名前の別の View ファイルを作成します。そのファイルに次のコードをコピーします。
src/Template/Authexs/logout.php
You are successfully logged out.
index.php. という名前の別の View ファイルを作成します。そのファイルに次のコードをコピーします。
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
認証が実装されているため、上記の URL にアクセスしようとすると、以下のようなログイン ページにリダイレクトされます。
正しい認証情報を入力すると、ログインし、以下に示す画面にリダイレクトされます。
ログアウトリンクをクリックすると、再びログイン画面にリダイレクトされます。
以上がCakePHP サービスの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。