Maison développement back-end tutoriel php Comment ajouter une nouvelle vérification d'utilisateur dans yii

Comment ajouter une nouvelle vérification d'utilisateur dans yii

Jun 15, 2018 pm 04:20 PM
yii 用户验证

Cet article est une analyse détaillée et une introduction à la méthode d'ajout d'une nouvelle vérification d'utilisateur dans yii. Les amis qui en ont besoin peuvent s'y référer

1. ajouter un nouvel utilisateur ? Vérification :
Parce que je souhaite créer le backend et le frontend du site Web dans la même application yii. Mais le frontend contient également le centre de gestion des membres. , donc deux pages de connexion différentes sont requises et les informations utilisateur doivent être stockées dans différents cookies ou sessions. Par conséquent, une vérification utilisateur doit être ajoutée à une application
2. 🎜>
Avant de personnaliser la vérification des utilisateurs, nous devons d'abord comprendre les méthodes de vérification et d'autorisation de yii.
Afin de vérifier un utilisateur, nous devons définir une classe de vérification avec une logique de vérification. Pour être implémenté dans l'interface yii IUserIdentity, différentes classes peuvent implémenter différentes méthodes de vérification. La connexion au site Web nécessite généralement de vérifier le nom d'utilisateur et le mot de passe. Yii fournit la classe CUserIdentity, qui est généralement utilisée pour vérifier les noms d'utilisateur et les mots de passe. pour le réécrire méthode Authenticate() pour implémenter notre propre méthode de vérification
Le code spécifique est le suivant :
Code Php

class UserIdentity extends CUserIdentity  
{  
    private $_id;  
    public function authenticate()  
    {  
        $record=User::model()->findByAttributes(array('username'=>$this->username));  
        if($record===null)  
            $this->errorCode=self::ERROR_USERNAME_INVALID;  
        else if($record->password!==md5($this->password))  
            $this->errorCode=self::ERROR_PASSWORD_INVALID;  
        else 
        {  
            $this->_id=$record->id;  
            $this->setState('title', $record->title);  
            $this->errorCode=self::ERROR_NONE;  
        }  
        return !$this->errorCode;  
    }  
    public function getId()  
    {  
        return $this->_id;  
    }  
}
Copier après la connexion

Le code suivant est appelé lorsque. l'utilisateur se connecte :

Code Php

// 使用提供的用户名和密码登录用户  
$identity=new UserIdentity($username,$password);  
if($identity->authenticate())  
    Yii::app()->user->login($identity);  
else 
    echo $identity->errorMessage;
Copier après la connexion


Lorsque l'utilisateur quitte, le code suivant est appelé :
Code Php

// 注销当前用户  
Yii::app()->user->logout(); 
 其中的user是yii的一个components.需要在protected/config/main.php中定义
Copier après la connexion
Code Php

'user'=>array(  
    // enable cookie-based authentication  
    'allowAutoLogin'=>true,  
        'loginUrl' => array('site/login'),  
),
Copier après la connexion
Ici, nous ne spécifions pas le nom de classe de l'utilisateur car l'utilisateur est une instance de la classe CWebUser par défaut dans Yii.

Nous avons maintenant implémenté la vérification et la sortie de la connexion des utilisateurs. Mais les utilisateurs peuvent désormais accéder à toutes les actions, qu'ils soient ou non connectés. L'étape suivante consiste donc à autoriser l'accès des utilisateurs. Dans Yii, l'autorisation des utilisateurs est implémentée via le filtre de contrôle d'accès, c'est-à-dire. , filtre de contrôle d'accès. Jetons un coup d'œil à un contrôleur simple avec contrôle d'accès :
Code Php

class AdminDefaultController extends CController  
{   
    public function filters()  
        {  
            return array('accessControl');  
        }  
        public function accessRules()  
        {  
            return array(  
                array(  
                    'allow',  
                    'users' => array('@'),  
                ),  
                array(  
                    'deny',  
                    'users' => array('*')  
                ),  
            );  
        }  
}
Copier après la connexion
Nous définissons le filtre spécifique dans la méthode des filtres. Nous pouvons voir qu'il y a un paramètre accessControl dans. le tableau renvoyé par la méthode filters,

Il existe une méthode filterAccessControl dans la classe CController :
Code Php

public function filterAccessControl($filterChain)  
{  
    $filter=new CAccessControlFilter;  
    $filter->setRules($this->accessRules());  
    $filter->filter($filterChain);  
}
Copier après la connexion
Une nouvelle instance de CAccessControlFilter est créée à l'intérieur et les paramètres renvoyés par la méthode accessRules() sont transmis lorsque setRules.

$filter->filter($filterChain) continue d'appeler d'autres filtres.

Et toutes les règles d'autorisation spécifiques sont définies dans accessRules :
Code Php

public function accessRules()  
    {  
        return array(  
            array('deny',  
                'actions'=>array('create', 'edit'),  
                'users'=>array('?'),  
            ),  
            array('allow',  
                'actions'=>array('delete'),  
                'roles'=>array('admin'),  
            ),  
            array('deny',  
                'actions'=>array('delete'),  
                'users'=>array('*'),  
            ),  
        );  
    }
Copier après la connexion

Pour les règles spécifiques, veuillez vous référer au manuel yii

Ajouter un nouveau système de vérification :<🎜. >Nous héritons d'abord d'un CAdminUser de CWebUser :
Code PHP

Nous devons le placer dans les composants
class CAdminWebUser extends CWebUser  
{  
    public $loginUrl = array(&#39;admin/admin/login&#39;);  
}
Copier après la connexion

S'il s'agit d'une application globale, passez la section des composants de protected/config/main.php :
Code Php

&#39;user&#39;=>array(  
    // enable cookie-based authentication  
        &#39;class&#39; => &#39;CAdminUser&#39;,  
    &#39;allowAutoLogin&#39;=>true,  
       &#39;loginUrl&#39; => array(&#39;site/login&#39;),  
),
Copier après la connexion
S'il est dans les modules, ajoutez le code suivant dans la méthode init de la classe module :

Code Php

$this->setComponents(array(  
       &#39;adminUser&#39; => array(  
                &#39;class&#39; => &#39;CAdminWebUser&#39;,  
                &#39;allowAutoLogin&#39; => false,  
        )  
));
Copier après la connexion
Méthode d'appel finale

Code Php

Mais cela ne suffit pas également. Filtre du contrôleur. Nous devons personnaliser un filtre pour mettre en œuvre la vérification et la vérification d'un autre utilisateur
//全局应用  
Yii::app()->getComponent(&#39;adminUser&#39;);  
//在模块中  
Yii::app()->controller->module->getComponent(&#39;adminUser&#39;);
Copier après la connexion

La première étape consiste à personnaliser un filtre :
Code PHP
<. 🎜>

Réécrivez ensuite la méthode filterAccessController de la classe CController
class CAdminAccessControlFilter extends CAccessControlFilter  
{  
    protected function preFilter($filterChain)  
    {  
        $app=Yii::app();  
        $request=$app->getRequest();  
        $user = Yii::app()->controller->module->getComponent(&#39;adminUser&#39;);  
        $verb=$request->getRequestType();  
        $ip=$request->getUserHostAddress();  
        foreach($this->getRules() as $rule)  
        {  
            if(($allow=$rule->isUserAllowed($user,$filterChain->controller,$filterChain->action,$ip,$verb))>0) // allowed  
                break;  
            else if($allow<0) // denied  
            {  
                $this->accessDenied($user);  
                return false;  
            }  
        }  
        return true;  
    }  
}
Copier après la connexion

Code Php
OK, ici on peut préciser l'autorisation de adminUser dans le accessRules() de ce Controller

public function filterAccessControl($filterChain)  
{  
    $filter = new CAdminAccessControlFilter();  
    $filter->setRules($this->accessRules());  
    $filter->filter($filterChain);  
}  
//在这里我们使用自定义的filter类替换了原来的filter
Copier après la connexion

Ce qui précède représente l'intégralité du contenu de cet article, j'espère qu'il sera utile à tout le monde. Apprendre est utile Pour plus de contenu connexe, veuillez faire attention au site Web PHP chinois !

Recommandations associées :

À propos de l'implémentation de la fonction de connexion dans le framework Yii de PHP


Comment modifier yii2 .0 utilisateurs La table utilisateur utilisée pour la connexion est constituée d'autres tables


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!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Comment déverrouiller tout dans Myrise
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

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

Comment utiliser le framework PHP Yii pour développer un système de sauvegarde cloud hautement disponible Comment utiliser le framework PHP Yii pour développer un système de sauvegarde cloud hautement disponible Jun 27, 2023 am 09:04 AM

Avec le développement continu de la technologie du cloud computing, la sauvegarde des données est devenue quelque chose que chaque entreprise doit faire. Dans ce contexte, il est particulièrement important de développer un système de sauvegarde cloud hautement disponible. Le framework PHP Yii est un framework puissant qui peut aider les développeurs à créer rapidement des applications Web hautes performances. Ce qui suit explique comment utiliser le framework Yii pour développer un système de sauvegarde cloud hautement disponible. Conception du modèle de base de données Dans le framework Yii, le modèle de base de données est une partie très importante. Parce que le système de sauvegarde des données nécessite beaucoup de tables et de relations

Symfony vs Yii2 : quel framework est le meilleur pour développer des applications Web à grande échelle ? Symfony vs Yii2 : quel framework est le meilleur pour développer des applications Web à grande échelle ? Jun 19, 2023 am 10:57 AM

Alors que la demande d'applications Web continue de croître, les développeurs ont de plus en plus de choix dans le choix des frameworks de développement. Symfony et Yii2 sont deux frameworks PHP populaires. Ils ont tous deux des fonctions et des performances puissantes, mais face à la nécessité de développer des applications Web à grande échelle, quel framework est le plus adapté ? Nous procéderons ensuite à une analyse comparative de Symphony et Yii2 pour vous aider à faire un meilleur choix. Présentation de base Symphony est un framework d'application Web open source écrit en PHP et basé sur

Requête de données dans le framework Yii : accédez efficacement aux données Requête de données dans le framework Yii : accédez efficacement aux données Jun 21, 2023 am 11:22 AM

Le framework Yii est un framework d'application Web PHP open source qui fournit de nombreux outils et composants pour simplifier le processus de développement d'applications Web, dont la requête de données est l'un des composants importants. Dans le framework Yii, nous pouvons utiliser une syntaxe de type SQL pour accéder à la base de données afin d'interroger et de manipuler les données efficacement. Le générateur de requêtes du framework Yii comprend principalement les types suivants : requête ActiveRecord, requête QueryBuilder, requête de commande et requête SQL originale.

Comment utiliser le framework Yii3 en php ? Comment utiliser le framework Yii3 en php ? May 31, 2023 pm 10:42 PM

À mesure qu’Internet continue de se développer, la demande de développement d’applications Web augmente également. Pour les développeurs, le développement d'applications nécessite un cadre stable, efficace et puissant, qui peut améliorer l'efficacité du développement. Yii est un framework PHP hautes performances de premier plan qui offre des fonctionnalités riches et de bonnes performances. Yii3 est la version nouvelle génération du framework Yii, qui optimise davantage les performances et la qualité du code basé sur Yii2. Dans cet article, nous présenterons comment utiliser le framework Yii3 pour développer des applications PHP.

Comment annuler le compte de connexion Win11 Comment annuler le compte de connexion Win11 Jan 11, 2024 pm 05:24 PM

Dans le système win11, nous devons nous connecter à chaque fois que nous entrons dans le système. Cependant, s'il n'y a qu'un seul compte dans notre système ou s'il n'est pas nécessaire de protéger le compte, nous n'avons pas besoin de nous connecter à chaque fois. le temps, nous pouvons annuler le compte de connexion en annulant le mot de passe, examinons les méthodes spécifiques ci-dessous. Comment annuler le compte de connexion dans win11 1. Tout d'abord, cliquez sur le bouton fléché au centre de la barre des tâches et sélectionnez rapidement l'option "Démarrer". 2. Ensuite, entrez dans l'interface des paramètres système et cliquez rapidement sur l'option "Exécuter" pour démarrer. 3. Ensuite, entrez la commande : controluserpasswords2 et appuyez sur la touche Entrée. 4. Cliquez pour ouvrir l'option « Propriétés du compte utilisateur » et décochez « Pour utiliser cette machine, les utilisateurs doivent entrer

Yii2 vs Phalcon : quel framework est le meilleur pour développer des applications de rendu graphique ? Yii2 vs Phalcon : quel framework est le meilleur pour développer des applications de rendu graphique ? Jun 19, 2023 am 08:09 AM

À l’ère actuelle de l’information, le big data, l’intelligence artificielle, le cloud computing et d’autres technologies sont devenus au centre des préoccupations des grandes entreprises. Parmi ces technologies, la technologie de rendu des cartes graphiques, en tant que technologie de traitement graphique haute performance, fait l'objet de plus en plus d'attention. La technologie de rendu des cartes graphiques est largement utilisée dans le développement de jeux, les effets spéciaux de films et de télévision, la modélisation technique et d'autres domaines. Pour les développeurs, choisir un framework adapté à leurs projets est une décision très importante. Parmi les langages actuels, PHP est un langage très dynamique. Quelques excellents frameworks PHP comme Yii2, Ph.

Comment définir un mot de passe à la mise sous tension sur Win11 Comment définir un mot de passe à la mise sous tension sur Win11 Dec 22, 2023 pm 01:18 PM

Si nous voulons définir la confidentialité de notre ordinateur, nous pouvons définir un mot de passe de mise sous tension pour l'ordinateur, et c'est très pratique. Il suffit de le faire dans les paramètres. Comment définir un mot de passe de mise sous tension dans Win11 : 1. Tout d'abord, cliquez avec le bouton droit sur le menu "Démarrer" et cliquez sur Paramètres. 2. Cliquez ensuite sur « Compte ». 3. Cliquez ensuite sur « Options de connexion ». 4. Recherchez ensuite « Mot de passe » et cliquez sur Ajouter. 5. Enfin, il peut être ajouté avec succès.

Comment effectuer la validation des entrées utilisateur et le filtrage de sécurité en PHP ? Comment effectuer la validation des entrées utilisateur et le filtrage de sécurité en PHP ? Jun 29, 2023 pm 03:01 PM

Comment effectuer la validation des entrées utilisateur et le filtrage de sécurité en PHP ? Lors du développement d'applications Web, la validation des entrées utilisateur et le filtrage de sécurité sont des aspects très importants. Si les entrées de l'utilisateur ne sont pas gérées correctement, cela peut entraîner diverses vulnérabilités de sécurité, telles que les attaques par script intersite (XSS) et par injection SQL. Par conséquent, la validation et le filtrage de sécurité des entrées des utilisateurs sont l’une des mesures importantes pour protéger les applications Web. Cet article explique comment effectuer la validation des entrées utilisateur et le filtrage de sécurité en PHP. Validation du type de données Avant de recevoir l'entrée de l'utilisateur, il doit d'abord être validé

See all articles