Heim  >  Artikel  >  Backend-Entwicklung  >  CakePHP-Autorisierung

CakePHP-Autorisierung

WBOY
WBOYOriginal
2024-08-29 12:58:47801Durchsuche

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

Was ist die CakePHP-Autorisierung?

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.

Wie überprüfe ich die CakePHP-Autorisierung?

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.

CakePHP-Autorisierung erstellen

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.

  • FormAuthenticate: Damit können Sie Kunden bestätigen, denen strukturierte POST-Informationen übermittelt wurden. Typischerweise handelt es sich hierbei um eine Anmeldestruktur, in die Clients Daten eingeben. Dies ist die Standardvalidierungsstrategie.
  • BasicAuthenticate: Damit können Sie bestätigen, dass Clients die grundlegende HTTP-Validierung verwenden.
  • DigestAuthenticate: Damit können Sie bestätigen, dass Clients die Digest-HTTP-Validierung verwenden.

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.

CakePHP-Autorisierung

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.

CakePHP-Autorisierung

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.

Das obige ist der detaillierte Inhalt vonCakePHP-Autorisierung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Vorheriger Artikel:CakePHP-FrameworkNächster Artikel:CakePHP-Framework