Heim Backend-Entwicklung PHP-Tutorial Wie führt man eine Benutzerauthentifizierung und -autorisierung in CakePHP durch?

Wie führt man eine Benutzerauthentifizierung und -autorisierung in CakePHP durch?

Jun 05, 2023 am 08:31 AM
cakephp 授权 用户认证

In der Webentwicklung sind Benutzerauthentifizierung und -autorisierung eine der sehr wichtigen Funktionen. CakePHP bietet als beliebtes PHP-Framework viele praktische Tools zur Bewältigung dieser Probleme. In diesem Artikel stellen wir vor, wie man Benutzerauthentifizierung und -autorisierung in CakePHP durchführt.

Was ist Benutzerauthentifizierung und -autorisierung?

In Webanwendungen bezieht sich die Benutzerauthentifizierung auf die Überprüfung der Identität des Benutzers. In der Regel muss der Benutzer einen Benutzernamen und ein Kennwort eingeben und die Anwendung überprüft dann, ob diese Anmeldeinformationen korrekt sind. Nach der Authentifizierung kann die Anwendung den Benutzer als angemeldet identifizieren und so den Zugriff auf Ressourcen ermöglichen, die eine Authentifizierung erfordern.

Autorisierung bedeutet, dass der Benutzer authentifiziert wurde, aber nur auf bestimmte Ressourcen in der Anwendung zugreifen kann. Beispielsweise können Administratoren auf einige eingeschränkte Ressourcen zugreifen, die normale Benutzer nicht haben.

Benutzerauthentifizierung in CakePHP

Der Kern der Benutzerauthentifizierung in CakePHP ist die Auth-Komponente. Die Auth-Komponente bietet eine benutzerfreundliche Methode zur Handhabung der Benutzerauthentifizierung, einschließlich der Festlegung von Authentifizierungsobjekten, der Konfiguration von Authentifizierungsparametern, der Generierung von Anmelde- und Abmeldeseiten und der Steuerung, welche Seiten eine Authentifizierung erfordern.

Sehen wir uns an, wie man die Benutzerauthentifizierung in CakePHP implementiert.

Zuerst müssen Sie die Auth-Komponente aus dem CakePHP-Framework importieren. Sie können die folgende Anweisung in Ihrem Controller hinzufügen:

public $components = array('Auth');
Nach dem Login kopieren

Anschließend müssen Sie die Auth-Komponente für die Verwendung des Authentifizierungsobjekts konfigurieren. Wenn Sie beispielsweise ein Modell mit dem Namen „Benutzer“ haben, um Benutzerdaten zu verarbeiten, können Sie die Auth-Komponente wie folgt konfigurieren:

public $components = array(
    'Auth' => array(
        'authenticate' => array(
            'Form' => array(
                'userModel' => 'User',
                'fields' => array('username' => 'email')
            )
        ),
        'loginAction' => array(
            'controller' => 'users',
            'action' => 'login'
        ),
        'loginRedirect' => array(
            'controller' => 'home',
            'action' => 'index'
        ),
        'logoutRedirect' => array(
            'controller' => 'users',
            'action' => 'login'
        )
    )
);
Nach dem Login kopieren

In diesem Beispiel haben wir angegeben, dass die Auth-Komponente den Formularvalidator für die Benutzerauthentifizierung verwendet. Wir haben auch das Benutzermodell für die Verarbeitung von Benutzerdaten angegeben und das Feld „Benutzername“ auf „E-Mail“ eingestellt. Wir richten auch Weiterleitungsseiten für die Anmeldung und Abmeldung ein.

Jetzt müssen wir den Validator in unserem Benutzermodell implementieren.

class User extends AppModel {
    public function beforeSave($options = array()) {
        if (isset($this->data[$this->alias]['password'])) {
            $this->data[$this->alias]['password'] = AuthComponent::password($this->data[$this->alias]['password']);
        }
        return true;
    }
}
Nach dem Login kopieren

In diesem Beispiel verwenden wir die von CakePHP bereitgestellte Methode „password()“, um das Passwort zu hashen. Die Auth-Komponente authentifiziert sich automatisch, indem sie sie mit dem eingehenden Passwort-Hash vergleicht.

Jetzt müssen wir aus unserer Sicht eine Anmeldeseite erstellen. Wir können den integrierten FormHelper von CakePHP verwenden, um ein Basisformular zu erstellen.

echo $this->Form->create('User', array('action' => 'login'));
echo $this->Form->input('email');
echo $this->Form->input('password');
echo $this->Form->end('Login');
Nach dem Login kopieren

Nachdem der Anmeldevorgang übermittelt wurde, müssen wir die Authentifizierungslogik angeben. Wir können den folgenden Code im Controller verwenden:

public function login() {
    if ($this->request->is('post')) {
        if ($this->Auth->login()) {
            return $this->redirect($this->Auth->redirectUrl());
        } else {
            $this->Flash->error(__('Invalid email or password, try again'));
        }
    }
}
Nach dem Login kopieren

Wenn beim Anmeldevorgang der eingegebene Benutzername und das eingegebene Kennwort gültig sind, speichert die Auth-Komponente automatisch die Benutzerinformationen in der Sitzung und leitet den Browser zur Post-Anmeldeseite weiter.

Jetzt haben wir die grundlegende Benutzerauthentifizierungslogik abgeschlossen, aber Sie möchten möglicherweise den Zugriff auf bestimmte Seiten nur für authentifizierte Benutzer einschränken.

Benutzerautorisierung in CakePHP

Um den Zugriff auf bestimmte Seiten nur durch authentifizierte Benutzer zu beschränken, können wir die von der Auth-Komponente bereitgestellte Autorisierungslogik verwenden.

Zuerst müssen wir in unserem Controller festlegen, für welche Vorgänge eine Benutzerautorisierung erforderlich ist.

public function beforeFilter() {
    $this->Auth->allow(array('index', 'view'));
}
Nach dem Login kopieren

In diesem Beispiel erlauben wir dem Gast, auf den Index zuzugreifen und Vorgänge im Controller anzuzeigen.

Wir können dann die von der Auth-Komponente bereitgestellte Methode isAuthorized() verwenden, um zu prüfen, ob der Benutzer die Berechtigung zum Zugriff auf eine bestimmte Ressource hat.

public function isAuthorized($user) {
    if (in_array($this->action, array('add', 'edit', 'delete'))) {
        if ($user['role'] != 'admin') {
            return false;
        }
    }
    return true;
}
Nach dem Login kopieren

In diesem Beispiel prüfen wir, ob für diesen Vorgang Administratorrechte erforderlich sind. Wenn ja, prüfen Sie, ob die Benutzerrolle Administrator ist. Wenn nicht, geben Sie false zurück, andernfalls geben Sie true zurück.

Es ist zu beachten, dass Sie den Parameter $user an die Methode isAuthorized() übergeben müssen, damit die Auth-Komponente die Rolle und Berechtigungen des aktuellen Benutzers kennt.

Zusammenfassung

In diesem Artikel haben wir vorgestellt, wie man Benutzerauthentifizierung und -autorisierung in CakePHP durchführt. Durch die Verwendung der Auth-Komponente und einiger grundlegender Konfigurationen können Sie schnell sichere Webanwendungen erstellen. Natürlich sind Benutzerauthentifizierung und -autorisierung nur ein Teil der Websicherheit, und andere Probleme müssen dennoch sorgfältig behandelt werden, wie z. B. Injektionsangriffe, Cross-Site-Scripting usw. Das Erlernen der Benutzerauthentifizierung und -autorisierung in CakePHP ist jedoch ein guter Anfang, um sicherzustellen, dass Ihre Webanwendungen sicherer und zuverlässiger sind.

Das obige ist der detaillierte Inhalt vonWie führt man eine Benutzerauthentifizierung und -autorisierung in CakePHP durch?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
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

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

CakePHP-Projektkonfiguration CakePHP-Projektkonfiguration Sep 10, 2024 pm 05:25 PM

In diesem Kapitel werden wir die Umgebungsvariablen, die allgemeine Konfiguration, die Datenbankkonfiguration und die E-Mail-Konfiguration in CakePHP verstehen.

CakePHP arbeitet mit Datenbank CakePHP arbeitet mit Datenbank Sep 10, 2024 pm 05:25 PM

Das Arbeiten mit der Datenbank in CakePHP ist sehr einfach. In diesem Kapitel werden wir die CRUD-Operationen (Erstellen, Lesen, Aktualisieren, Löschen) verstehen.

So aktualisieren Sie die Langzeitdienstversion von Win10 Enterprise Version 2016 auf die Professional-Version So aktualisieren Sie die Langzeitdienstversion von Win10 Enterprise Version 2016 auf die Professional-Version Jan 03, 2024 pm 11:26 PM

Wenn wir die aktuelle Win10 Enterprise Edition 2016 Long-Term Service Edition nicht mehr verwenden möchten, können wir auf die Professional Edition umsteigen. Die Methode ist auch sehr einfach. Wir müssen nur einige Inhalte ändern und das System-Image installieren. So ändern Sie die Langzeitdienstversion von Win10 Enterprise Version 2016 in die Professional-Version 1. Drücken Sie Win+R und geben Sie dann „regedit“ ein. 2. Fügen Sie den folgenden Pfad direkt in die Adressleiste oben ein: Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsNT \CurrentVersion3 , suchen Sie dann die EditionID und ersetzen Sie den Inhalt zur Bestätigung durch „professional“.

CakePHP erstellt Validatoren CakePHP erstellt Validatoren Sep 10, 2024 pm 05:26 PM

Der Validator kann durch Hinzufügen der folgenden zwei Zeilen im Controller erstellt werden.

Besprechen Sie CakePHP Besprechen Sie CakePHP Sep 10, 2024 pm 05:28 PM

CakePHP ist ein Open-Source-Framework für PHP. Es soll die Entwicklung, Bereitstellung und Wartung von Anwendungen erheblich vereinfachen. CakePHP basiert auf einer MVC-ähnlichen Architektur, die sowohl leistungsstark als auch leicht zu verstehen ist. Modelle, Ansichten und Controller gu

CakePHP-Datei hochladen CakePHP-Datei hochladen Sep 10, 2024 pm 05:27 PM

Um am Datei-Upload zu arbeiten, verwenden wir den Formular-Helfer. Hier ist ein Beispiel für den Datei-Upload.

CakePHP-Routing CakePHP-Routing Sep 10, 2024 pm 05:25 PM

In diesem Kapitel lernen wir die folgenden Themen im Zusammenhang mit dem Routing kennen.

CakePHP Datum und Uhrzeit CakePHP Datum und Uhrzeit Sep 10, 2024 pm 05:27 PM

Um in cakephp4 mit Datum und Uhrzeit zu arbeiten, verwenden wir die verfügbare FrozenTime-Klasse.

See all articles