


Exemples PHP des principes d'authentification Laravel et explication détaillée de l'authentification entièrement personnalisée
J'ai récemment appris le framework Laravel, donc l'article suivant vous présente principalement les informations pertinentes sur les principes d'authentification de Laravel et l'authentification entièrement personnalisée. L'article le présente en détail à travers un exemple de code. Les amis qui en ont besoin peuvent s'y référer. . Ce qui suit est Apprenons avec l'éditeur
Avant-propos
La fonction d'authentification par défaut de Laravel est déjà très complète, mais nous en rencontrons souvent. certaines situations qui doivent être personnalisées, telles que les champs de vérification ne correspondent pas à ceux par défaut, comme la nécessité de répondre simultanément à l'authentification du nom d'utilisateur et de l'e-mail, etc. Comment créer un certificat entièrement personnalisé ? Plutôt qu'un tutoriel, je préfère vous présenter le principe de fonctionnement, afin qu'il vous soit plus facile de le modifier ou de le personnaliser vous-même.
Interface authentifiable
IlluminateContractsAuthAuthenticatable
Authenticable définit une interface qui doit être implémentée par un modèle ou une classe qui peut être utilisé pour l'authentification , c'est-à-dire que si vous devez utiliser une classe personnalisée pour l'authentification, vous devez implémenter les méthodes définies par cette interface.
// 获取唯一标识的,可以用来认证的字段名,比如 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();
Par exemple, votre modèle d'authentification doit utiliser « jeton » au lieu de « mot de passe » comme vérification du mot de passe. Méthode getAuthPassword() La valeur de retour est 'token';
Trait authentique
IlluminateAuthAuthenticatable
Le trait authentique défini dans Laravel est également le trait d'authentification Laravel par défaut utilisé par le modèle User. Ce trait définit l'identifiant d'authentification par défaut du modèle User comme 'id', le champ du mot de passe comme 'password', le champ correspondant au jeton de mémorisation comme Remember_token, etc.
Certains paramètres peuvent être modifiés en remplaçant ces méthodes du modèle User.
Interface Guard
IlluminateContractsAuthGuard
L'interface Guard définit un modèle ou une classe qui implémente des méthodes d'authentification authentifiables (authentifiables) et certaines interfaces couramment utilisées.
// 判断当前用户是否登录 public function check(); // 判断当前用户是否是游客(未登录) public function guest(); // 获取当前认证的用户 public function user(); // 获取当前认证用户的 id,严格来说不一定是 id,应该是上个模型中定义的唯一的字段名 public function id(); // 根据提供的消息认证用户 public function validate(array $credentials = []); // 设置当前用户 public function setUser(Authenticatable $user);
Interface StatefulGuard
IlluminateContractsAuthStatefulGuard
L'interface StatefulGuard hérite de l'interface Guard, à l'exception de certains éléments de base définis dans Guard En plus de l'interface, un autre Guard avec état a également été ajouté
Les interfaces nouvellement ajoutées incluent celles-ci :
// 尝试根据提供的凭证验证用户是否合法 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 est un garde très simple. passé Passer dans une fermeture pour l'authentification. Vous pouvez ajouter un RequestGuard personnalisé en appelant Auth::viaRequest.SessionGuard
IlluminateAuthSessionGuardSessionGuard est le garde par défaut pour l'authentification Web Laravel.TokenGuard
IlluminateAuthTokenGuardTokenGuard convient à l'authentification API sans état via l'authentification par jeton.Interface UserProvider
IlluminateContractsAuthUserProviderL'interface UserProvider définit la méthode d'obtention du modèle d'authentification, comme l'obtention du modèle basé sur l'identifiant, l'obtention du modèle basé sur l'e-mail, etc.// 通过唯一标示符获取认证模型 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
IlluminateAuthDatabaseUserProviderObtenez le modèle d'authentification directement via la table de la base de données.
EloquentUserProvider
IlluminateAuthEloquentUserProviderObtenez le modèle d'authentification via le modèle éloquentAuthManager
IlluminateAuthAuthManagerGuard est utilisé pour authentifier si un utilisateur est authentifié avec succès, UserProvider est utilisé pour fournir la source du modèle d'authentification, et gère la garde et la personnalisation en fonction de la configuration du projet. Guard et d'autres fonctions sont implémentées via AuthManager. AuthManager devrait être un peu comme la classe Context dans le pattern de stratégie et la factory dans la méthode factory D'une part, elle gère la Guard, et d'autre part, elle appelle la stratégie spécifique (Guard). ) via la méthode magique __call. La classe d'implémentation correspondante de la façade Auth est AuthManager. AuthManager est enregistré en tant que singleton dans le conteneur et est utilisé pour gérer tous les travaux de garde, de fournisseur d'utilisateurs et de proxy de garde.Authentification personnalisée
Sur la base des connaissances ci-dessus, vous pouvez savoir qu'il est très simple de personnaliser une authentification.- Créer un modèle d'authentification
- Créez un UserProvider personnalisé
- Créez un Guard personnalisé ;
添加 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 });
在 config\auth.php的 guards 数组中添加自定义 guard,一个自定义 guard 包括两部分: driver 和 provider.
'oustn' => [ 'driver' => 'myguard', 'provider' => 'myusers', ],
在 config\auth.php的 providers 数组中添加自定义 user provider.
'myusers' => [ 'driver' => 'myuserprovider' // 里面具体的字段可以根据你创建 user provider 需要的信息自由添加,可以通过 Auth::createUserProvider('myuserprovider') 创建 ],
设置 config\auth.php 的 defaults.guard 为 oustn.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Les opérations de base de données en PHP sont simplifiées à l'aide d'ORM, qui mappe les objets dans des bases de données relationnelles. EloquentORM dans Laravel vous permet d'interagir avec la base de données en utilisant une syntaxe orientée objet. Vous pouvez utiliser ORM en définissant des classes de modèle, en utilisant des méthodes Eloquent ou en créant un système de blog dans la pratique.

Les dernières versions de Laravel 9 et CodeIgniter 4 fournissent des fonctionnalités et des améliorations mises à jour. Laravel9 adopte l'architecture MVC et fournit des fonctions telles que la migration de bases de données, l'authentification et le moteur de modèles. CodeIgniter4 utilise l'architecture HMVC pour fournir le routage, l'ORM et la mise en cache. En termes de performances, le modèle de conception basé sur le fournisseur de services de Laravel9 et le framework léger de CodeIgniter4 lui confèrent d'excellentes performances. Dans les applications pratiques, Laravel9 convient aux projets complexes qui nécessitent de la flexibilité et des fonctions puissantes, tandis que CodeIgniter4 convient au développement rapide et aux petites applications.

Comparez les capacités de traitement des données de Laravel et CodeIgniter : ORM : Laravel utilise EloquentORM, qui fournit un mappage relationnel classe-objet, tandis que CodeIgniter utilise ActiveRecord pour représenter le modèle de base de données en tant que sous-classe de classes PHP. Générateur de requêtes : Laravel dispose d'une API de requêtes chaînées flexible, tandis que le générateur de requêtes de CodeIgniter est plus simple et basé sur des tableaux. Validation des données : Laravel fournit une classe Validator qui prend en charge les règles de validation personnalisées, tandis que CodeIgniter a moins de fonctions de validation intégrées et nécessite un codage manuel des règles personnalisées. Cas pratique : l'exemple d'enregistrement d'utilisateur montre Lar

Laravel - Artisan Commands - Laravel 5.7 est livré avec une nouvelle façon de traiter et de tester de nouvelles commandes. Il inclut une nouvelle fonctionnalité de test des commandes artisanales et la démonstration est mentionnée ci-dessous ?

Pour les débutants, CodeIgniter a une courbe d'apprentissage plus douce et moins de fonctionnalités, mais couvre les besoins de base. Laravel offre un ensemble de fonctionnalités plus large mais a une courbe d'apprentissage légèrement plus raide. En termes de performances, Laravel et CodeIgniter fonctionnent bien. Laravel dispose d'une documentation plus complète et d'un support communautaire actif, tandis que CodeIgniter est plus simple, léger et possède de solides fonctionnalités de sécurité. Dans le cas pratique de la création d'une application de blog, EloquentORM de Laravel simplifie la manipulation des données, tandis que CodeIgniter nécessite une configuration plus manuelle.

Lors du choix d'un framework pour de grands projets, Laravel et CodeIgniter ont chacun leurs propres avantages. Laravel est conçu pour les applications d'entreprise, offrant une conception modulaire, une injection de dépendances et un ensemble de fonctionnalités puissantes. CodeIgniter est un framework léger plus adapté aux projets de petite et moyenne taille, mettant l'accent sur la rapidité et la facilité d'utilisation. Pour les grands projets avec des exigences complexes et un grand nombre d'utilisateurs, la puissance et l'évolutivité de Laravel sont plus adaptées. Pour les projets simples ou les situations avec des ressources limitées, les capacités de développement légères et rapides de CodeIgniter sont plus idéales.

Pour les petits projets, Laravel convient aux projets plus importants qui nécessitent des fonctionnalités et une sécurité élevées. CodeIgniter convient aux très petits projets qui nécessitent légèreté et facilité d'utilisation.

L'architecture des microservices utilise des frameworks PHP (tels que Symfony et Laravel) pour implémenter des microservices et suit les principes RESTful et les formats de données standard pour concevoir des API. Les microservices communiquent via des files d'attente de messages, des requêtes HTTP ou gRPC et utilisent des outils tels que Prometheus et ELKStack pour la surveillance et le dépannage.
