Filtres d'action dans MVC [Types de filtres avec exemples]
Publié: 2021-03-04Table des matières
ASP.NET MVC – Filtres d'action
Dans les filtres MVC (Model-View-Controller), nous utilisons la logique supplémentaire selon les différentes fonctionnalités ou logiques du traitement des requêtes MVC Framework.
Les filtres MVC implémentent un processus à différents niveaux : par exemple, l'autorisation, la journalisation et la mise en cache.
Nous pouvons considérer un filtre d'action comme un attribut que nous pouvons implémenter dans une méthode d'action de contrôleur pour effectuer la modification conformément à la logique métier.
On peut considérer les filtres MVC du système. L'attribut est défini comme la classe, la méthode, les propriétés et les champs.
Lire aussi : Projet MVC
Le framework ASP.NET MVC intègre divers filtres d'action
Autoriser : ce filtre d'action a la capacité de restreindre l'accès à un rôle d'utilisateur spécifique.
OutputCache : C'est le filtre d'action, et met en cache le résultat d'une méthode d'action de contrôleur dans le temps défini.
HandleError : Lorsque cette action de contrôleur s'exécute, elle gère les erreurs dans un scénario particulier si le code échoue. Il vous permet de créer votre filtre d'action personnalisé.
Par exemple, nous pouvons créer un filtre d'action personnalisé pour exécuter un système d'authentification personnalisé.
La source
Filtrage du pipeline dans le flux de cycle de vie des requêtes et des réponses :
La source
Le filtre fournit deux catégories d'implémentation de la logique dans le code, il effectue différentes définitions d'interface-
- Synchrone
- Asynchrone
Les filtres synchrones
Dans le filtre de synchronisation, nous pouvons exécuter le code avant et après le pipeline lors de son traitement ; nous pouvons le considérer comme des méthodes d'action OnStageExecuting et OnStageExecuted .
Filtres asynchrones
Les filtres asynchrones sont décrits avec une seule méthode, qui a les méthodes de
- OnActionExecutingOnActionExecuting
- OnActionExecuted
- OnActionExecutionAsync
Les extraits de code ci-dessous sont le type de déclaration
classe publique TimestampFilter : IActionFilter, IAsyncActionFilter
{
public void OnActionExecuting (contexte ActionExecutingContext)
{
context.ActionDescriptor.RouteValues["timestamp"] = DateTime.Now.ToString();
}
public void OnActionExecuted (contexte ActionExecutedContext)
{
var ts = DateTime.Parse(context.ActionDescriptor.RouteValues["timestamp"]).AddHours(1).ToString();
context.HttpContext.Response.Headers["X-EXPIRY-TIMESTAMP"] = ts ;
}
public async Task OnActionExecutionAsync (contexte ActionExecutingContext, ActionExecutionDelegate suivant)
{
this.OnActionExecuting(contexte);
var resultContext = wait next();
this.OnActionExecuted(resultContext);
}
}
Types de filtres d'action dans MVC
Le framework ASP.NET MVC maintient différents filtres :
Filtres d'autorisation : exécute l'attribut IAuthorisationFilter.
Filtres d'action : exécute l'attribut IActionFilter.
Filtres de résultat : Exécutez l'attribut IResultFilter.
Filtres d'exception : exécute l'attribut IExceptionFilter.
Filtres d'autorisation
Nous pouvons l'utiliser pour l'accessibilité de l'utilisateur, et nous pouvons le déclarer avant l'implémentation de la méthode d'action dans le contrôleur.
Le filtre d'autorisation active deux attributs intégrés, par exemple : Authorize et AllowAnonymous
Nous pouvons les utiliser dans une logique personnalisée dans le code selon nos besoins commerciaux.
L'extrait de code ci-dessous est l'exemple des filtres d'autorisation
[Autoriser]
public ActionResult SecureMethod()
{
retourner Vue();
}
[AutoriserAnonyme]
public ActionResult NonSecureMethod()
{
retourner Vue();
}
public ActionResult SecureMethod()
{
retourner Vue();
}
Filtres d'actions
Nous pouvons décrire les filtres d'action avant d'effectuer la méthode d'action et après la méthode d'action.
Il contient deux types de méthodes.
- OnActionExecuted
- OnActionExecutingOnActionExecuting
L'extrait de code ci-dessous est l'exemple des filtres d'action
utiliser le système ;
en utilisant System.Collections.Generic ;
en utilisant System.Linq ;
en utilisant System.Web ;
en utilisant System.Web.Mvc ;
espace de noms TutorialActionFilter.Filters
{
classe publique Myactionfilter : FilterAttribute,IActionFilter
{
public void OnActionExecuted (ActionExecutedContext filterContext)
{
si (filterContext.HttpContext.Session["UserID"] != null)
{
filterContext.Result = newRedirectResult("/Home/Index");
}
autre
{
filterContext.Result = newRedirectResult("/Login /Login");
}
}
public void OnActionExecuting (actionExecutingContext filterContext)
{
si (filterContext.HttpContext.Session["UserID"] != null)
{
filterContext.Result = newRedirectResult("/Home/ Index");
}
autre
{
filterContext.Result = newRedirectResult("/Login /Login");
}
}
}
}
[TutorialActionFilter]
[AcceptVerbs(HttpVerbs.Get)]
public ActionResult GetPerson()
{
Personne p = nouvelle Personne ();
return Vue("Personne",p);
}
Filtres de résultats
Nous pouvons décrire les filtres d'action avant d'exécuter la méthode d'action et après l'exécution de la méthode d'action.
Il contient deux types de méthodes.
- OnResultExecuted
- OnResultExecuting
L'extrait de code ci-dessous est l'exemple des filtres de résultats
utiliser le système ;
en utilisant System.Collections.Generic ;
en utilisant System.Linq ;
en utilisant System.Web ;
en utilisant System.Web.Mvc ;
espace de noms ResultFilter.Filters
{
classe publique MyResultfilter : FilterAttribute,IResultFilter
{
public void OnResultExecuted(ResultExecutedContext filterContext)
{
si (filterContext.HttpContext.Session["UserID"] != null)
{
filterContext.Result = newRedirectResult("/Accueil/Contact");
}
autre
{
filterContext.Result = newRedirectResult("/Login/Login");
}
}
public void OnResultExecuting (resultExecutingContext filterContext)
{
si (filterContext.HttpContext.Session["UserID"] != null)
{
filterContext.Result = newRedirectResult("/Accueil/Contact");
}
autre
{
filterContext.Result = newRedirectResult("/Login/Login");
}
}
}
}
[MonFiltreRésultat]
[AcceptVerbs(HttpVerbs.Get)]
public ActionResult GetPerson()
{
Personne p = nouvellePersonne ();
return Vue("Personne",p);
}
Filtres d'exceptions
Nous pouvons les utiliser lorsqu'un contrôleur ou une méthode d'action lève l'exception.
Ce filtre d'exception est important pour intercepter l'exception.
Vous trouverez ci-dessous l'extrait de code pour utiliser les filtres d'exception
utiliser le système ;
en utilisant System.Collections.Generic ;
en utilisant System.Linq ;
en utilisant System.Web ;
en utilisant System.Web.Mvc ;
espace de noms ExceptionFilter.Filters
{
classe publique MyExceptionFilter : FilterAttribute, IExceptionFilter
{
public void OnException (ExceptionContext filterContext)
{
filterContext.Controller.ViewBag.onExceptionError = "Filtre ExceptionFilter appelé" ;
filterContext.HttpContext.Response.Write("Filtre ExceptionFilter appelé");
}
}
}
[MonFiltreException]
classe publique HomeController : Contrôleur
{
[AcceptVerbs(HttpVerbs.Get)]
public ActionResult GetPerson()
{
Personne p = nouvellePersonne ();
return Vue("Personne",p);
}
}
Lire aussi : Projet Java MVC
Apprenez des cours de logiciels en ligne dans les meilleures universités du monde. Gagnez des programmes Executive PG, des programmes de certificat avancés ou des programmes de maîtrise pour accélérer votre carrière.
Conclusion
Nous espérons que cet article vous a aidé à comprendre les filtres d'action dans MVC.
Si vous souhaitez en savoir plus sur le développement full-stack, consultez le programme Executive PG de upGrad & IIIT-B en développement logiciel full-stack, conçu pour les professionnels en activité et offrant plus de 500 heures de formation rigoureuse, plus de 9 projets et affectations, statut d'anciens élèves de l'IIIT-B, projets de synthèse pratiques et aide à l'emploi avec les meilleures entreprises.
Que sont les structures de données en programmation ?
Les structures de données sont la façon dont nous organisons les données dans un programme. Les deux structures de données les plus importantes sont les tableaux et les listes chaînées. Les tableaux sont la structure de données la plus familière et la plus facile à comprendre. Les tableaux sont essentiellement des listes numérotées d'éléments associés. Ils sont simples à comprendre et à utiliser, mais ils ne sont pas très efficaces lorsque vous travaillez avec de grandes quantités de données. Les listes chaînées sont plus complexes, mais elles peuvent être très efficaces si elles sont utilisées correctement. Ce sont de bons choix lorsque vous devez ajouter ou supprimer des éléments au milieu d'une longue liste, ou lorsque vous devez rechercher des éléments dans une longue liste.
Quelles sont les différences entre la liste chaînée et les tableaux ?
Dans les tableaux, un index est utilisé pour accéder à un élément. Les éléments du tableau sont organisés dans un ordre séquentiel, ce qui facilite l'accès et la modification des éléments si un index est utilisé. Array a également une taille fixe. Les éléments sont attribués au moment de sa création. Dans une liste chaînée, un pointeur permet d'accéder à un élément. Les éléments d'une liste chaînée ne sont pas nécessairement stockés dans un ordre séquentiel. Une liste chaînée a une taille inconnue car elle peut contenir des nœuds au moment de sa création. Un pointeur est utilisé pour accéder à un élément, ce qui facilite l'allocation de mémoire.
Qu'est-ce qu'un pointeur en C ?
Un pointeur est un type de données en C qui stocke l'adresse de n'importe quelle variable ou fonction. Il est généralement utilisé comme référence à un autre emplacement mémoire. Un pointeur peut contenir une adresse mémoire d'un tableau, d'une structure, d'une fonction ou de tout autre type. C utilise des pointeurs pour transmettre et recevoir des valeurs de fonctions. Les pointeurs sont utilisés pour allouer dynamiquement de l'espace mémoire.