Maison > Article > développement back-end > Introduction à la méthode d'application du filtre ASP.NET
Dans le développement Web J2EE, il existe un filtre qui peut intercepter l'accès URL spécifié et exécuter la méthode de filtrage en fonction de la situation réelle de l'application, le code demandé est modifié dans le filtre, les informations de session sont jugées et peuvent être utilisées. être utilisé pour le contrôle des autorisations. En bref, ce filtre est très significatif. Il peut également être considéré comme une application du modèle de conception de chaîne de responsabilité dans J2EE.
Alors, est-il possible de définir une telle structure de filtre dans ASP.NET et d'effectuer les opérations logiques correspondantes dans le filtre ? La réponse est oui, cet article vous dira si vous écrivez un filtre, comment le configurer dans une application Web IIS.
Processus 1 : Comment écrire un filtre
L'écriture d'un filtre consiste en fait à écrire une classe de filtre, c'est-à-dire à écrire un module HttpModule. Ce filtre doit implémenter la classe de base IHttpModule et répéter l'écriture. Init et donnez-vous un exemple pratique comme suit :
Ceci est un PageFilter.cs
using System; using System.Web; using System.Web.SessionState; using System.Collections.Generic; using System.Collections; using System.Text; using System.IO; public class PageFilter: IHttpModule { public String ModuleName { get { return "PageFilter"; } } //在 Init 方法中注册HttpApplication // 通过委托方式注册事件 public void Init(HttpApplication application) { application.AcquireRequestState += new EventHandler(Application_AcquireRequestState); } private void Application_AcquireRequestState(Object source, EventArgs e) { HttpApplication application = (HttpApplication)source; HttpContext context = application.Context; HttpSessionState session = context.Session; HttpRequest request = context.Request; HttpResponse response = context.Response; String contextPath = request.ApplicationPath; } }
Il est à noter que "filtre" peut aussi être appelé "intercepteur", ce c'est-à-dire le processus d'interception de l'intégralité de la requête/réponse HTTP, car l'ensemble du processus de requête/réponse peut être divisé en plusieurs étapes, alors il y aura un problème impliqué, c'est-à-dire quelle étape spécifique votre filtre souhaite intercepter, comme ci-dessus dans la fonction Init, vous pouvez définir les étapes spécifiques que vous souhaitez intercepter. Par exemple, l'interception ci-dessus est l'étape où la session de requête est générée. AcquireRequestStat est le représentant de cet état, et la fonction de traitement correspondante après interception est Application_AcquireRequestState, donc. une méthode Application_AcquireRequestState est définie ci-dessous.Dans cette méthode, une série d'objets tels que l'application, le contexte, la session, la demande et la réponse peuvent être obtenus via une conversion de type forcée. Sur la base de l'obtention de ces objets, vous pouvez écrire une logique métier de base, telle que. déterminer si l'accès actuel à l'URL est légal, vérifier si l'accès actuel est l'accès de l'utilisateur après la connexion, etc.
De plus, puisque l'ensemble du processus d'interception comporte de nombreuses étapes, comment en intercepter d'autres ? Cela devrait être très simple. Semblable à ce qui précède, il suffit de le définir dans Init selon la logique suivante :
application Le nom standard de l'étape 1 = new EventHandler (le nom de la méthode de traitement correspondante de cette étape 1. );
application .Nom standard de l'étape 2 = new EventHandler (nom de la méthode de traitement correspondant à cette étape 2) ; . . Les noms standard des phases
<configuration> <system.web> <httpModules> <add name="pageModule" type="PageFilter"/> </httpModules> </system.web> </configuration>Ceci est effectivement configuré, puis publier le site Web pour générer la dll, etc. Voilà, l'accès aux URL sera automatiquement intercepté le moment venu, mais n'oubliez pas que par défaut, toutes les requêtes concernant l'application seront interceptées. Si vous pointez vers l'interception de requêtes spécifiques, par exemple, vous souhaitez intercepter uniquement les requêtes concernant les fichiers aspx. . , vous pouvez alors ajouter le jugement du nom du suffixe du fichier à la logique du filtre. S'il ne s'agit pas d'aspx, laissez-le partir Pour plus d'articles sur les méthodes d'application des filtres ASP.NET, veuillez payer. attention au site PHP chinois !