با سلام خدمت کاربران گرامی سایت پی وی لرن و آن دسته از کاربرانی که به زبان PHP علاقه دارند. این دوره آموزش CakePHP مخصوص آن ها تهیه شده تا مهارت و تسلط خود را بر این زبان با یادگیری CakePHP به حد کمال برسانند و با کمک آن به یک برنامه نویس حرفه ای در عرصه PHP تبدیل شوند. در جلسه گذشته آموختیم که چگونه می توان یک رکورد را در پایگاه داده حذف نمود. در ادامه دوره CakePHP، آموزش کار با Authentication در CakePHP را به علاقمندان این دوره ارائه می نماییم.
پیش از آن که به آموزش کار با Authentication در CakePHP بپردازیم به این مسئله می پردازیم که Authentication چیست؟
Authentication به معنای تایید هویت است.
ممکن است برای شما سوال پیش بیاید که تایید هویت یا Authentication چه کاربردی در CakePHP دارد؟
از Authentication برای شناسایی کاربر صحیح استفاده می شود.
به طور کل سه روش برای تایید هویت در CakePHP وجود دارد.
تغییر زیر را در فایل config/routes.php همانطور که در کد زیر نشان داده است اعمال نمایید.
config/routes.php
1 2 3 4 5 6 7 8 9 10 11 12 13 | <?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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | <?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'] ]); $this->Auth->config('authenticate', [ AuthComponent::ALL => ['userModel' => 'users'], 'Form']); } public function beforeRender(Event $event){ if (!array_key_exists('_serialize', $this=>viewVars) && in_array($this->response=>type(), ['application/json', 'application/xml'])) { $this->set('_serialize', true); } } } |
یک فایل AuthexsController.php در src/Controller/AuthexsController.php بسازید و سپس کد زیر را در فایل کنترل کننده کپی کنید.
src/Controller/AuthexsController.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | <?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()); } } ?> |
یک دایرکتوری Authexs در src/Template ایجاد کنید و یک View file زیر دایرکتوری فراخوانی شده login.ctp بسازید و سپس کد زیر را در فایل کنترل کننده کپی کنید.
src/Template/Authexs/login.ctp
1 2 3 4 5 6 7 | <?php echo $this->Form->create(); echo $this->Form->input('username'); echo $this->Form->input('password'); echo $this->Form->button('Submit'); echo $this->Form->end(); ?> |
حالا یک View file فراخوانی شده logout.ctp بسازید و سپس کد زیر را در فایل کنترل کننده کپی کنید.
src/Template/Authexs/logout.ctp
1 | You are successfully loggedout. |
حالا باز هم یک View file فراخوانی شده index.ctp بسازید و سپس کد زیر را در فایل کنترل کننده کپی کنید.
src/Template/Authexs/index.ctp
1 2 3 4 | You are successfully logged in. <?php echo $this->Html->link('logout',["controller" => "Authexs","action" => "logout"]); ?> |
مثال بالا را با مراجعه به URL زیر اجرا نمایید.
http://localhost:85/CakePHP/auth
همانطور که امی بینید Authentication اجرا شده است، بنابراین هنگامی که سعی می کنید به بازدید از URL بالا بپردازید، به صفحه ورود زیر هدایت می شوید.
پس از تایید هویت، همانطور که در زیر نشان داده شده است به صفحه نمایشگر هدایت می شوید.
پس از کلیک روی لینک خروج logout، دوباره به صفحه ورود به سایت هدایت می شوید.
در این جلسه به آموزش کار با Authentication در CakePHP پرداختیم.
در جلسه بعدی می آموزیم که در صورت بروز مشکلی در CakePHP چگونه آن را حل و فصل نماییم.
با پی وی لرن همراه باشید.