Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Keizinan CakePHP

Keizinan CakePHP

WBOY
WBOYasal
2024-08-29 12:58:47671semak imbas

Artikel berikut menyediakan garis besar untuk Kebenaran CakePHP. CakePHP ialah alat sumber terbuka yang menyediakan komponen Auth dalam cara yang boleh dipasang untuk melaksanakan tugas kami. Komponen Auth digunakan untuk menyediakan objek pengesahan dan kebenaran. Dalam erti kata lain, kita boleh mengatakan bahawa ia adalah gabungan kedua-duanya digunakan untuk menentukan kebenaran dan pengesahan pengguna mengikut keperluan kami. Pengesahan bermaksud menentukan kelayakan pengguna dan mengesahkan kelayakan tersebut, seperti nama pengguna dan kata laluan. Sebaliknya, kebenaran bermaksud pengesahan pengguna berdasarkan bukti kelayakan pengguna dan maklumat lain yang diberikan oleh pengguna.

Mulakan Kursus Pembangunan Perisian Percuma Anda

Pembangunan web, bahasa pengaturcaraan, ujian perisian & lain-lain

Apakah Keizinan CakePHP?

Seperti yang anda mungkin tahu, dua modul baharu "setakat ini" (tidak setakat ini) ditambah untuk mengurus idea Pengesahan dan Kebenaran dalam aplikasi CakePHP anda. Sepanjang jangka panjang, pengesahan dan kebenaran diawasi dalam lapisan Pengawal menggunakan AuthComponent. Kedua-dua perkara ini biasanya mengisi kerumitan apabila tugas anda berkembang, menjadikan AuthComponent sebagai kelas yang membingungkan yang menguruskan banyak elemen serentak.

Salah satu pemikiran pertama di sebalik modul baharu ini adalah untuk memfaktorkan semula AuthComponent dan membuat lapisan eksplisit untuk ditangani:

Pengesahan: Siapa anda?

Kelulusan: Adakah anda akan mengatakan anda dibenarkan?

Kami akan menyiasat idea Keizinan dalam artikel ini menggunakan model tertentu: Kami harus membayangkan beberapa aplikasi permainan di mana Pengguna akan mengawasi Kejohanan. Pengguna akan mahu membuat Kejohanan baharu dan menyertai Kejohanan melalui Keahlian Kejohanan dengan pelbagai gabungan. Pelanggan tidak akan mendekati Kejohanan kecuali jika mereka dialu-alukan untuk bermain. Pemain Kejohanan boleh mengalu-alukan Pengguna yang berbeza untuk bermain.

Bagaimana untuk Semak Keizinan CakePHP?

Sekarang mari lihat bagaimana kita boleh menyemak kebenaran CakePHP seperti berikut:

Selepas melaksanakan Perisian Tengah Kebenaran pada aplikasi kami masing-masing, kami boleh menyemak kebenaran. Ini kerana perisian tengah membungkus identiti setiap permintaan.

Sekarang mari kita lihat bagaimana kita boleh menyemak kebenaran dengan sumber tunggal seperti berikut:

Mereka boleh strategi memperkasakan anda sebenarnya untuk melihat kelulusan pada aset bersendirian. Biasanya ini adalah bahan ORM atau objek kawasan aplikasi.

Dasar anda memberi rasional untuk menyelesaikan pilihan kelulusan:

Kod:

// Fetch identity from each and every request
$user = $this->request->getAttribute('identity');
// Checking authorization on $sample
if ($user->can('delete', $sample)) {
// Do delete operation
}

Sekarang mari kita lihat bagaimana kita boleh menggunakan syarat skop seperti berikut:

Setiap kali anda mahu semakan kelulusan untuk pelbagai item seperti pertanyaan bernombor, anda perlu mendapatkan rekod yang pelanggan semasa mendekatinya. Modul ini melaksanakan idea ini sebagai ‘skop.’

Pendekatan skop membenarkan anda untuk 'skop' pertanyaan atau set keputusan dan mengembalikan rundown atau objek soalan yang dimuat semula:

Kod:

// Fetch the identity from each and every request
$specified user = $this->request->getAttribute('identity');
$Sql_query = $specified fuser->ApplyScopeTo('index', $Sql_query);

Komponen Kebenaran boleh digunakan dalam aktiviti pengawal selia untuk melancarkan kelulusan, yang menimbulkan pengecualian kekecewaan.

Buat Keizinan CakePHP

Sekarang mari kita lihat bagaimana kita boleh membuat kebenaran dalam CakePHP dengan contoh seperti berikut:

Pertama, kita perlu memahami parameter yang perlu kita pertimbangkan seperti berikut:

Pengesahan ialah cara paling biasa untuk membezakan pelanggan yang betul. CakePHP mengekalkan tiga jenis pengesahan.

  • FormAuthenticate: Ia membenarkan anda mengesahkan pelanggan diberi maklumat POST berstruktur. Biasanya, ini ialah struktur log masuk yang pelanggan masukkan data. Ini ialah strategi pengesahan lalai.
  • BasicAuthenticate: Ia membenarkan anda mengesahkan pelanggan menggunakan pengesahan HTTP Asas.
  • DigestAuthenticate: Ia membenarkan anda mengesahkan pelanggan menggunakan pengesahan HTTP Digest.

Pertama, kita perlu mengkonfigurasi fail route.php seperti berikut:

Kod:

<?php
use Cake\Core\Plugin;
use Cake\Routing\RouteBuilder;
use Cake\Routing\Router;
Router::defaultRouteClass('DRoute');
Router::scope('/', function (RouteBuilder $routes) {
$routes->connect('/auth',['controller'=>'Auth','action'=>'index']);
$routes->connect('/login',['controller'=>'Auth','action'=>'login']);
$routes->connect('/logout',['controller'=>'Auth','action'=>'logout']);
$routes->fallbacks('DRoute');
});
Plugin::routes();

Selepas itu, kita perlu mencipta fail controller.php dan tulis kod berikut seperti berikut:

Kod:

<?php
namespace App\Controller;
use Cake\Controller\Controller;
use Cake\Event\Event;
use Cake\Controller\Component\AuthComponent;
class DemoController extends Controller {
public function initialize() {
parent::initialize();
$this->loadComponent('RequestHandler');
$this->loadComponent('Flash');
$this->loadComponent('Auth', [
'authenticate' => [
'Form' => [
'fields' => [
'username' => 'userid',
'password' => 'userpass'
]
]
],
'loginAction' => [
'controller' => 'Authexs',
'action' => 'login'
],
'loginRedirect' => [
'controller' => 'Authexs',
'action' => 'index'
],
'logoutRedirect' => [
'controller' => 'Authexs',
'action' => 'login'
]
]);
}
public function BFilter(Event $eventt) {
$this->Auth->allow(['index','view']);
$this->set('loggedIn', $this->Auth->specified user());
}
}

Sekarang buat fail authcontrollr.php dan tulis kod berikut seperti berikut:

Kod:

<?php
namespace App\Controller;
use App\Controller\AppController;
use Cake\ORM\TableRegistry;
use Cake\Datasource\ConnectionManager;
use Cake\Event\Eventt;
use Cake\Auth\DefaultPasswordHasher;
class AuthController extends AppController {
var $component = array('Auth');
public function index(){
}
public function login(){
if($this->request->is('post')) {
$specified_user = $this->Auth->identify();
if($user){
$this->Auth->setUser($specified_user);
return $this->redirect($this->Auth->redirectUrl());
} else
$this->Flash->errormsg('Entered username and password is wrong');
}
}
public function logout(){
return $this->redirect($this->Auth->logout());
}
}

Akhir sekali, kita perlu mencipta templat log masuk untuk melihat keputusan seperti berikut.

<?php
echo $this->Form->create();
echo $this->Form->control('UserID');
echo $this->Form->control('Userpass');
echo $this->Form->button('Submit');
echo $this->Form->end();
?>

Penjelasan:

Di sini kami mencipta templat untuk melihat hasilnya. Selepas melaksanakan kod di atas, kita akan mendapat skrin berikut.

Keizinan CakePHP

Di sini kami boleh menyediakan bukti kelayakan pengguna untuk log masuk.

Kita mesti mencipta fail PHP lain untuk log keluar dan tulis kod berikut.

Kod:

<?php
echo $this->Html->link('logout',[
"controller" => "Auth","action" => "logout"
]);
?>

After executing the above code, we will get the following screen.

Keizinan CakePHP

CakePHP Authorization Installing

Now let’s see how we can install authorization in CakePHP as follows:

First, we need to load the plugin by using the following statement as follows:

Code:

$this-> addPlugin('Authorization');

After that, we need to enable all authorization plugins by importing the following class as follows:

Code:

use Authorization\AuthorizationService;
use Authorization\AuthorizationServiceInterface;
use Authorization\AuthorizationServiceProviderInterface;
use Authorization\Middleware\AuthorizationMiddleware;
use Authorization\Policy\OrmResolver;

After creating a policy as per our requirement, we also need to fix add and edit action as per our requirement. The requirement mentioned above we can achieve through coding.

Conclusion

From the above article, we have taken in the essential idea of the CakePHP authorization and see the representation and example of the CakePHP authorization. Finally, we saw how and when we use the CakePHP authorization from this article.

Atas ialah kandungan terperinci Keizinan CakePHP. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel sebelumnya:Rangka Kerja CakePHPArtikel seterusnya:Rangka Kerja CakePHP