.net Core Custom Authorization Filter Example

4 min read Jun 03, 2024
.net Core Custom Authorization Filter Example

Créer un filtre d'autorisation personnalisé dans ASP.NET Core

Introduction

ASP.NET Core fournit un système d'autorisation puissant qui vous permet de contrôler l'accès aux ressources. Cependant, il peut arriver que vous ayez besoin d'une logique d'autorisation plus spécifique que celle fournie par les attributs d'autorisation standard. Dans ce cas, vous pouvez créer vos propres filtres d'autorisation personnalisés.

Ce tutoriel vous guidera à travers la création d'un filtre d'autorisation personnalisé dans ASP.NET Core. Nous allons créer un filtre simple qui vérifie si l'utilisateur est un administrateur.

Créer un filtre d'autorisation personnalisé

  1. Créer une classe qui hérite de AuthorizationFilterAttribute:
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.Filters;

public class AdminAuthorizationFilter : AuthorizationFilterAttribute
{
    public override void OnAuthorization(AuthorizationFilterContext context)
    {
        // Vérifier si l'utilisateur est authentifié
        if (!context.HttpContext.User.Identity.IsAuthenticated)
        {
            // Rediriger ou renvoyer une erreur 401 (Non autorisé)
            context.Result = new UnauthorizedResult();
            return;
        }

        // Vérifier si l'utilisateur est administrateur
        if (!context.HttpContext.User.IsInRole("Administrateur"))
        {
            // Rediriger ou renvoyer une erreur 403 (Interdit)
            context.Result = new ForbidResult();
            return;
        }

        // Autoriser l'accès à la ressource
        base.OnAuthorization(context);
    }
}
  1. Appliquer le filtre à votre contrôleur ou action:
[Authorize]
[AdminAuthorizationFilter]
public class MyController : Controller
{
    // Actions du contrôleur
}

Dans cet exemple, le filtre AdminAuthorizationFilter est appliqué à toutes les actions du contrôleur MyController. Vous pouvez également l'appliquer à une action spécifique.

Utiliser le filtre d'autorisation personnalisé

Lorsque vous demandez une ressource protégée par le filtre AdminAuthorizationFilter, le filtre vérifie si l'utilisateur est authentifié et si il est dans le rôle "Administrateur". Si l'une de ces conditions n'est pas remplie, le filtre redirige l'utilisateur ou renvoie une erreur 401 (Non autorisé) ou 403 (Interdit).

Conclusion

Créer un filtre d'autorisation personnalisé dans ASP.NET Core vous permet de personnaliser la logique d'autorisation de votre application. Vous pouvez utiliser des filtres personnalisés pour créer des règles d'autorisation spécifiques à votre application et répondre à des besoins d'accès uniques.

N'oubliez pas que la sécurité est importante. Assurez-vous de tester votre filtre d'autorisation soigneusement et de mettre en place des mesures de sécurité supplémentaires pour protéger votre application.