Position actuelle: Accueil> Derniers articles> YII Framework Middleware: implémentation d'authentification et d'autorisation des utilisateurs

YII Framework Middleware: implémentation d'authentification et d'autorisation des utilisateurs

M66 2025-06-06

introduction

Le middleware est un élément important du développement Web moderne et est souvent utilisé pour insérer la logique de traitement entre les demandes et les réponses, améliorant ainsi la sécurité et la fonctionnalité de l'application. Dans le cadre YII, le middleware est appelé "filtres" et peut implémenter efficacement les fonctions d'authentification et d'autorisation de l'utilisateur. Cet article introduira systématiquement comment implémenter ces deux fonctions clés via des filtres dans le cadre YII.

1. Implémentez l'authentification de l'identité utilisateur

L'authentification des utilisateurs est la première ligne de défense pour assurer la sécurité du système et peut empêcher un accès non autorisé. Dans YII, nous pouvons créer une classe héritée de Yii \ Base \ ActionFilter en tant que middleware pour intercepter les utilisateurs ungulgés.

Voici un exemple de code pour un filtre d'authentification:

 
namespace app\filters;

use Yii;
use yii\base\ActionFilter;

class AuthFilter extends ActionFilter
{
    public function beforeAction($action)
    {
        $user = Yii::$app->user;

        if ($user->isGuest) {
            $user->loginRequired();
            return false;
        }

        return parent::beforeAction($action);
    }
}

Ce filtre vérifie avant que l'utilisateur accède à une opération protégée et redirige vers la page de connexion s'il n'est pas connecté.

Ensuite, nous devons lier le filtre au contrôleur:

 
namespace app\controllers;

use yii\web\Controller;
use app\filters\AuthFilter;

class SiteController extends Controller
{
    public function behaviors()
    {
        return [
            'auth' => [
                'class' => AuthFilter::class,
                'only' => ['admin'],
            ],
        ];
    }

    public function actionAdmin()
    {
        return 'Admin Area';
    }
}

Dans l'exemple ci-dessus, AuthFilter n'est appliqué qu'à l'action admin , garantissant que seuls les utilisateurs authentifiés peuvent accéder à cette partie du contenu.

2. Implémentez le contrôle d'autorisation des utilisateurs

L'autorisation de l'utilisateur est utilisée pour déterminer si un utilisateur enregistré a la permission d'accéder à une ressource ou d'effectuer une certaine opération. Dans le cadre YII, nous pouvons également utiliser des filtres pour terminer la logique d'autorisation.

Voici un exemple de filtre qui implémente l'autorisation de l'utilisateur:

 
namespace app\filters;

use Yii;
use yii\base\ActionFilter;
use yii\web\ForbiddenHttpException;

class AccessControlFilter extends ActionFilter
{
    public function beforeAction($action)
    {
        $user = Yii::$app->user;

        if (!$user->can($action->id)) {
            throw new ForbiddenHttpException('You are not allowed to perform this action.');
        }

        return parent::beforeAction($action);
    }
}

Ce filtre utilise la méthode $ user-> can () pour déterminer si l'utilisateur a la permission d'effectuer l'action actuelle. S'il n'y a pas d'autorisation, une exception interdite 403 sera lancée.

Le filtre d'autorisation est appliqué de manière similaire à l'authentification:

 
namespace app\controllers;

use yii\web\Controller;
use app\filters\AccessControlFilter;

class SiteController extends Controller
{
    public function behaviors()
    {
        return [
            'access' => [
                'class' => AccessControlFilter::class,
                'only' => ['admin'],
            ],
        ];
    }

    public function actionAdmin()
    {
        return 'Admin Area';
    }
}

De cette façon, nous pouvons contrôler de manière flexible l'accès de l'utilisateur à des opérations de contrôleur spécifiques.

Résumer

Cet article décrit comment utiliser le mécanisme du filtre (c'est-à-dire middleware) pour implémenter l'authentification des utilisateurs et le contrôle d'autorisation dans le cadre YII. Cette méthode a non seulement une structure claire, mais améliore également la sécurité de l'ensemble de l'application. En créant des classes de filtre et en les configurant dans le contrôleur, les développeurs peuvent implémenter une logique de gestion d'accès hautement contrôlable, qui est l'une des principales pratiques de création d'applications Web sécurisées.