이 장에서는 CakePHP에서 사용할 수 있는 인증 프로세스에 대한 정보를 다룹니다.
인증은 올바른 사용자를 식별하는 과정입니다. CakePHP는 세 가지 유형의 인증을 지원합니다.
FormAuthenticate − 양식 POST 데이터를 기반으로 사용자를 인증할 수 있습니다. 일반적으로 이는 사용자가 정보를 입력하는 로그인 양식입니다. 기본 인증 방식입니다.
BasicAuthenticate − 기본 HTTP 인증을 사용하여 사용자를 인증할 수 있습니다
DigestAuthenticate − Digest 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.phpYou are successfully logged in. <?php echo $this->Html->link('logout',[ "controller" => "Authexs","action" => "logout" ]); ?>
다음 URL에 접속하여 위의 예시를 실행해 보세요.
출력
인증이 구현되었기 때문에 위 URL로 접속을 시도하시면 아래와 같은 로그인 페이지로 이동하게 됩니다.올바른 자격 증명을 입력하면 로그인되며 아래와 같은 화면으로 리디렉션됩니다.
로그아웃 링크를 클릭하면 다시 로그인 화면으로 이동합니다.
위 내용은 CakePHP 서비스의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!