


PHP-Beispiele für Laravel-Authentifizierungsprinzipien und detaillierte Erläuterung der vollständig angepassten Authentifizierung
Ich habe das Laravel-Framework kürzlich kennengelernt, daher stellt Ihnen der folgende Artikel hauptsächlich die relevanten Informationen zu den Laravel-Authentifizierungsprinzipien und der vollständig angepassten Authentifizierung vor. Freunde, die es benötigen, können darauf zurückgreifen . Das Folgende ist: Lass uns gemeinsam mit dem Herausgeber lernen
Vorwort
Die Standardauthentifizierungsfunktion von Laravel ist bereits sehr umfassend, aber wir stoßen oft darauf Einige Situationen müssen angepasst werden, z. B. stimmen die Verifizierungsfelder nicht mit den Standardfeldern überein, z. B. die Notwendigkeit, Benutzernamen und E-Mail-Authentifizierung gleichzeitig zu erfüllen usw. Wie erstelle ich ein vollständig benutzerdefiniertes Zertifikat? Anstelle eines Tutorials stelle ich lieber das Funktionsprinzip vor, damit Sie es einfacher selbst ändern oder anpassen können.
Authenticatable-Schnittstelle
IlluminateContractsAuthAuthenticatable
Authenticatable definiert eine Schnittstelle, die von einem Modell oder einer Klasse implementiert werden muss, die implementiert werden kann Wird zur Authentifizierung verwendet. Das heißt, wenn Sie eine benutzerdefinierte Klasse zur Authentifizierung verwenden müssen, müssen Sie die von dieser Schnittstelle definierten Methoden implementieren.
// 获取唯一标识的,可以用来认证的字段名,比如 id,uuid public function getAuthIdentifierName(); // 获取该标示符对应的值 public function getAuthIdentifier(); // 获取认证的密码 public function getAuthPassword(); // 获取remember token public function getRememberToken(); // 设置 remember token public function setRememberToken($value); // 获取 remember token 对应的字段名,比如默认的 'remember_token' public function getRememberTokenName();
Zum Beispiel muss Ihr Authentifizierungsmodell „Token“ anstelle von „Passwort“ als Passwortüberprüfung verwenden. Zu diesem Zeitpunkt können Sie die Rückgabe von ändern die getAuthPassword()-Methode. Der Wert ist „token“. Auch das standardmäßige Benutzermodell von Laravel Auth verwendet das Merkmal. Dieses Merkmal definiert die Standardauthentifizierungskennung des Benutzermodells als „id“, das Kennwortfeld als „password“, das Feld, das dem Erinnerungstoken entspricht, als „remember_token“ und so weiter.
Einige Einstellungen können durch Überschreiben dieser Methoden des Benutzermodells geändert werden.
IlluminateContractsAuthGuardGuard-Schnittstelle definiert ein Modell oder eine Klasse, die authentifizierungsfähige (authentifizierbare) Authentifizierungsmethoden und einige implementiert häufig verwendete Schnittstellen.
Guard-Schnittstelle
// 判断当前用户是否登录
public function check();
// 判断当前用户是否是游客(未登录)
public function guest();
// 获取当前认证的用户
public function user();
// 获取当前认证用户的 id,严格来说不一定是 id,应该是上个模型中定义的唯一的字段名
public function id();
// 根据提供的消息认证用户
public function validate(array $credentials = []);
// 设置当前用户
public function setUser(Authenticatable $user);
// 尝试根据提供的凭证验证用户是否合法 public function attempt(array $credentials = [], $remember = false); // 一次性登录,不记录session or cookie public function once(array $credentials = []); // 登录用户,通常在验证成功后记录 session 和 cookie public function login(Authenticatable $user, $remember = false); // 使用用户 id 登录 public function loginUsingId($id, $remember = false); // 使用用户 ID 登录,但是不记录 session 和 cookie public function onceUsingId($id); // 通过 cookie 中的 remember token 自动登录 public function viaRemember(); // 登出 public function logout();
RequestGuard
IlluminateAuthRequestGuardRequestGuard ist ein sehr einfacher Schutz, der in einem Abschluss übergeben wird. Wird zertifiziert geliefert. Sie können einen benutzerdefinierten RequestGuard hinzufügen, indem Sie Auth::viaRequest aufrufen.SessionGuard
IlluminateAuthSessionGuardSessionGuard ist der Standardschutz für die Laravel-Webauthentifizierung.TokenGuard
IlluminateAuthTokenGuardTokenGuard eignet sich für die zustandslose API-Authentifizierung durch Token-Authentifizierung.UserProvider Interface
IlluminateContractsAuthUserProviderDie UserProvider-Schnittstelle definiert die Methode zum Abrufen des Authentifizierungsmodells, z. B. Abrufen des Modells basierend auf der ID, Abrufen des Modells basierend auf E-Mail usw.// 通过唯一标示符获取认证模型
public function retrieveById($identifier);
// 通过唯一标示符和 remember token 获取模型
public function retrieveByToken($identifier, $token);
// 通过给定的认证模型更新 remember token
public function updateRememberToken(Authenticatable $user, $token);
// 通过给定的凭证获取用户,比如 email 或用户名等等
public function retrieveByCredentials(array $credentials);
// 认证给定的用户和给定的凭证是否符合
public function validateCredentials(Authenticatable $user, array $credentials);
DatabaseUserProvider
IlluminateAuthDatabaseUserProviderErhalten Sie das Authentifizierungsmodell direkt über die Datenbanktabelle.EloquentUserProvider
IlluminateAuthEloquentUserProviderErhalten Sie das Authentifizierungsmodell über eloquent modelAuthManager
IlluminateAuthAuthManagerGuard wird verwendet, um zu authentifizieren, ob ein Benutzer erfolgreich authentifiziert wurde, UserProvider wird verwendet, um die Quelle des Authentifizierungsmodells bereitzustellen und verwaltet den Schutz und den benutzerdefinierten Schutz gemäß der Konfiguration des Projekts. Weitere Funktionen werden über AuthManager implementiert. AuthManager sollte ein bisschen wie die Context-Klasse im Strategiemuster und die Factory in der Factory-Methode sein. Einerseits verwaltet er den Guard und andererseits ruft er die spezifische Strategie (Guard) auf )-Methode durch die magische Methode __call.Die entsprechende Implementierungsklasse der Auth-Fassade ist AuthManager. AuthManager wird als Singleton im Container registriert und wird zur Verwaltung aller Guard-, Benutzeranbieter- und Guard-Proxy-Arbeiten verwendet.
Benutzerdefinierte AuthentifizierungAnhand der oben genannten Kenntnisse können Sie erkennen, dass es sehr einfach ist, eine Authentifizierung anzupassen.Authentifizierungsmodell erstellen
Erstellen Sie ein benutzerdefiniertes Authentifizierungsmodell und implementieren Sie die Authenticatable-Schnittstelle; Erstellen Sie einen benutzerdefinierten UserProvider- Erstellen Sie einen benutzerdefinierten UserProvider, implementieren Sie die UserProvider-Schnittstelle und geben Sie das oben genannte benutzerdefinierte Authentifizierungsmodell zurück.
- Erstellen Sie einen benutzerdefinierten Guard und implementieren Sie die Guard- oder StatefulGuard-Schnittstelle
添加 guard creator 和 user provider creator 到 AuthManager 中
在 AppServiceProvider 的 boot 方法添加如下代码:
Auth::extend('myguard', function(){ ... return new MyGuard(); //返回自定义 guard 实例 ... }); Auth::provider('myuserprovider', function(){ return new MyUserProvider(); // 返回自定义的 user provider });
Nach dem Login kopieren在 config\auth.php的 guards 数组中添加自定义 guard,一个自定义 guard 包括两部分: driver 和 provider.
'oustn' => [ 'driver' => 'myguard', 'provider' => 'myusers', ],
Nach dem Login kopieren在 config\auth.php的 providers 数组中添加自定义 user provider.
'myusers' => [ 'driver' => 'myuserprovider' // 里面具体的字段可以根据你创建 user provider 需要的信息自由添加,可以通过 Auth::createUserProvider('myuserprovider') 创建 ],
Nach dem Login kopieren设置 config\auth.php 的 defaults.guard 为 oustn.
Das obige ist der detaillierte Inhalt vonPHP-Beispiele für Laravel-Authentifizierungsprinzipien und detaillierte Erläuterung der vollständig angepassten Authentifizierung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



PHP und Flutter sind beliebte Technologien für die mobile Entwicklung. Flutter zeichnet sich durch plattformübergreifende Funktionen, Leistung und Benutzeroberfläche aus und eignet sich für Anwendungen, die eine hohe Leistung, plattformübergreifende und benutzerdefinierte Benutzeroberfläche erfordern. PHP eignet sich für serverseitige Anwendungen mit geringerer Leistung und nicht plattformübergreifend.

Datenbankoperationen in PHP werden durch ORM vereinfacht, das Objekte in relationalen Datenbanken abbildet. EloquentORM in Laravel ermöglicht Ihnen die Interaktion mit der Datenbank mithilfe einer objektorientierten Syntax. Sie können ORM verwenden, indem Sie Modellklassen definieren, Eloquent-Methoden verwenden oder in der Praxis ein Blog-System erstellen.

Analyse des PHP-Unit-Test-Tools: PHPUnit: Geeignet für große Projekte, bietet umfassende Funktionalität und ist einfach zu installieren, kann jedoch ausführlich und langsam sein. PHPUnitWrapper: geeignet für kleine Projekte, einfach zu verwenden, optimiert für Lumen/Laravel, verfügt jedoch über eingeschränkte Funktionalität, bietet keine Code-Coverage-Analyse und hat begrenzte Community-Unterstützung.

Die neuesten Versionen von Laravel 9 und CodeIgniter 4 bieten aktualisierte Funktionen und Verbesserungen. Laravel9 übernimmt die MVC-Architektur und bietet Funktionen wie Datenbankmigration, Authentifizierung und Template-Engine. CodeIgniter4 nutzt die HMVC-Architektur, um Routing, ORM und Caching bereitzustellen. In Bezug auf die Leistung sorgen das auf Dienstanbietern basierende Designmuster von Laravel9 und das leichte Framework von CodeIgniter4 für eine hervorragende Leistung. In praktischen Anwendungen eignet sich Laravel9 für komplexe Projekte, die Flexibilität und leistungsstarke Funktionen erfordern, während CodeIgniter4 für schnelle Entwicklung und kleine Anwendungen geeignet ist.

Laravel – Artisan Commands – Laravel 5.7 bietet eine neue Möglichkeit, neue Befehle zu behandeln und zu testen. Es enthält eine neue Funktion zum Testen von Handwerkerbefehlen und die Demonstration wird unten erwähnt?

Vergleichen Sie die Datenverarbeitungsfunktionen von Laravel und CodeIgniter: ORM: Laravel verwendet EloquentORM, das eine relationale Klassen-Objekt-Zuordnung bereitstellt, während CodeIgniter ActiveRecord verwendet, um das Datenbankmodell als Unterklasse von PHP-Klassen darzustellen. Abfrage-Builder: Laravel verfügt über eine flexible verkettete Abfrage-API, während der Abfrage-Builder von CodeIgniter einfacher und Array-basiert ist. Datenvalidierung: Laravel bietet eine Validator-Klasse, die benutzerdefinierte Validierungsregeln unterstützt, während CodeIgniter über weniger integrierte Validierungsfunktionen verfügt und eine manuelle Codierung benutzerdefinierter Regeln erfordert. Praxisfall: Beispiel einer Benutzerregistrierung zeigt Lar

Bei der Auswahl eines Frameworks für große Projekte haben Laravel und CodeIgniter jeweils ihre eigenen Vorteile. Laravel ist für Anwendungen auf Unternehmensebene konzipiert und bietet modularen Aufbau, Abhängigkeitsinjektion und einen leistungsstarken Funktionsumfang. CodeIgniter ist ein leichtes Framework, das sich eher für kleine bis mittelgroße Projekte eignet und Wert auf Geschwindigkeit und Benutzerfreundlichkeit legt. Für große Projekte mit komplexen Anforderungen und einer großen Anzahl von Benutzern sind die Leistung und Skalierbarkeit von Laravel besser geeignet. Für einfache Projekte oder Situationen mit begrenzten Ressourcen sind die leichten und schnellen Entwicklungsfunktionen von CodeIgniter idealer.

Für Anfänger bietet CodeIgniter eine sanftere Lernkurve und weniger Funktionen, deckt aber die Grundbedürfnisse ab. Laravel bietet einen größeren Funktionsumfang, weist jedoch eine etwas steilere Lernkurve auf. In Bezug auf die Leistung schneiden sowohl Laravel als auch CodeIgniter gut ab. Laravel verfügt über eine umfangreichere Dokumentation und aktive Community-Unterstützung, während CodeIgniter einfacher und leichtgewichtiger ist und über starke Sicherheitsfunktionen verfügt. Im praktischen Fall der Erstellung einer Blogging-Anwendung vereinfacht EloquentORM von Laravel die Datenmanipulation, während CodeIgniter mehr manuelle Konfiguration erfordert.
