Heim > Artikel > Backend-Entwicklung > CakePHP-Autorisierung
Der folgende Artikel bietet einen Überblick über die CakePHP-Autorisierung. CakePHP ist ein Open-Source-Tool, das auf steckbare Weise eine Auth-Komponente bereitstellt, um unsere Aufgabe auszuführen. Die Auth-Komponente wird zur Bereitstellung der Authentifizierungs- und Autorisierungsobjekte verwendet. Mit anderen Worten können wir sagen, dass es sich um eine Kombination aus beidem handelt, die zur Bestimmung der Autorisierung und Authentifizierung von Benutzern gemäß unseren Anforderungen verwendet wird. Bei der Authentifizierung geht es darum, die Anmeldeinformationen des Benutzers zu ermitteln und diese Anmeldeinformationen wie Benutzername und Passwort zu überprüfen. Andererseits bedeutet Autorisierung die Verifizierung des Benutzers anhand der Benutzeranmeldeinformationen und anderer vom Benutzer bereitgestellter Informationen.
Starten Sie Ihren kostenlosen Softwareentwicklungskurs
Webentwicklung, Programmiersprachen, Softwaretests und andere
Wie Sie vielleicht wissen, wurden „in letzter Zeit“ (nicht in letzter Zeit) zwei neue Module hinzugefügt, um die Ideen der Authentifizierung und Autorisierung in Ihren CakePHP-Anwendungen zu verwalten. Langfristig wurden Authentifizierung und Autorisierung auf der Controller-Ebene mithilfe von AuthComponent überwacht. Diese beiden Dinge werden normalerweise mit der Entwicklung Ihrer Aufgabe komplexer und machen die AuthComponent zu einer verwirrenden Klasse, die viele Elemente gleichzeitig verwaltet.
Einer der ersten Gedanken hinter diesen neuen Modulen bestand darin, AuthComponent umzugestalten und explizite Ebenen für Folgendes zu erstellen:
Bestätigung: Wer bist du?
Genehmigung: Würden Sie sagen, dass Sie zugelassen sind?
Wir werden die Autorisierungsideen in diesem Artikel anhand eines bestimmten Modells untersuchen: Wir sollten uns einige Spielanwendungen vorstellen, bei denen Benutzer Turniere überwachen. Die Benutzer möchten neue Turniere erstellen und über eine Turniermitgliedschaft mit zahlreichen Zugehörigkeiten an den Turnieren teilnehmen. Kunden werden nicht an den Turnieren teilnehmen, es sei denn, sie sind herzlich eingeladen, mitzuspielen. Spieler eines Turniers können verschiedene Benutzer zum Spielen einladen.
Jetzt sehen wir uns an, wie wir die CakePHP-Autorisierung wie folgt überprüfen können:
Nachdem wir die Autorisierungs-Middleware in unseren jeweiligen Anwendungen implementiert haben, können wir die Autorisierung überprüfen. Dies liegt daran, dass Middleware die Identität jeder Anfrage umhüllt.
Jetzt sehen wir uns an, wie wir die Autorisierung mit der einzelnen Ressource wie folgt überprüfen können:
Sie können Ihnen dabei helfen, die Genehmigung eines einzelnen Vermögenswerts zu prüfen. Normalerweise handelt es sich hierbei um eine ORM-Substanz oder ein Anwendungsbereichsobjekt.
Ihre Richtlinien geben einen Grund für die Entscheidung über die Genehmigungsentscheidung:
Code:
// Fetch identity from each and every request $user = $this->request->getAttribute('identity'); // Checking authorization on $sample if ($user->can('delete', $sample)) { // Do delete operation }
Jetzt wollen wir sehen, wie wir die Geltungsbereichsbedingungen wie folgt anwenden können:
Wenn Sie Genehmigungsprüfungen für eine Reihe von Artikeln benötigen, beispielsweise eine paginierte Anfrage, müssen Sie regelmäßig Datensätze abrufen, an die sich der aktuelle Kunde wendet. Dieses Modul setzt diese Idee als „Bereiche“ um.
Scope-Ansätze ermöglichen es Ihnen, eine Anfrage oder einen Ergebnissatz zu „skalieren“ und den aktualisierten Überblick oder das Frageobjekt zurückzugeben:
Code:
// Fetch the identity from each and every request $specified user = $this->request->getAttribute('identity'); $Sql_query = $specified fuser->ApplyScopeTo('index', $Sql_query);
Die Autorisierungskomponente kann bei Regulierungsaktivitäten genutzt werden, um die Genehmigung zu erleichtern, was zu einer Befreiung bei Enttäuschungen führt.
Jetzt sehen wir uns anhand eines Beispiels wie folgt an, wie wir eine Autorisierung in CakePHP erstellen können:
Zuerst müssen wir verstehen, welche Parameter wir wie folgt berücksichtigen müssen:
Die Bestätigung ist die häufigste Methode, um den richtigen Kunden zu identifizieren. CakePHP unterstützt drei Arten der Validierung.
Zuerst müssen wir die Datei „routes.php“ wie folgt konfigurieren:
Code:
<?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();
Danach müssen wir eine Controller.php-Datei erstellen und den folgenden Code wie folgt schreiben:
Code:
<?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()); } }
Erstellen Sie nun die Datei authcontrollr.php und schreiben Sie den folgenden Code wie folgt:
Code:
<?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()); } }
Schließlich müssen wir eine Anmeldevorlage erstellen, um das Ergebnis wie folgt anzuzeigen.
<?php echo $this->Form->create(); echo $this->Form->control('UserID'); echo $this->Form->control('Userpass'); echo $this->Form->button('Submit'); echo $this->Form->end(); ?>
Erklärung:
Hier erstellen wir eine Vorlage, um die Ergebnisse anzuzeigen. Nachdem wir den obigen Code ausgeführt haben, erhalten wir den folgenden Bildschirm.
Hier können wir Benutzeranmeldeinformationen für die Anmeldung bereitstellen.
Wir müssen eine weitere PHP-Datei zum Abmelden erstellen und den folgenden Code schreiben.
Code:
<?php echo $this->Html->link('logout',[ "controller" => "Auth","action" => "logout" ]); ?>
After executing the above code, we will get the following screen.
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.
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.
Das obige ist der detaillierte Inhalt vonCakePHP-Autorisierung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!