Maison  >  Article  >  développement back-end  >  Code d'implémentation du filtrage d'URL dans ASP.NET

Code d'implémentation du filtrage d'URL dans ASP.NET

高洛峰
高洛峰original
2017-01-21 15:11:562234parcourir

Ce qui suit est la définition de la classe.

using System;
 using System.Web;
 using System.Web.SessionState;

 namespace QTJZ
 {
     public class Filters : IHttpModule, IRequiresSessionState
     {
         public void Dispose() { }

         public void Init(HttpApplication application)
         {
             application.AcquireRequestState += new EventHandler(application_AcquireRequestState);
         }

         public void application_AcquireRequestState(object sender, EventArgs e)
         {
             HttpApplication application = sender as HttpApplication;
             HttpRequest request = application.Request;
             HttpResponse response = application.Response;

             string url=request.CurrentExecutionFilePath.Trim('/');
             string suffix = request.CurrentExecutionFilePathExtension.Trim('.');

             if (!url.Equals("Default.htm") && (suffix == "aspx" || suffix == "htm"))
             {
                 object sessionObj = application.Context.Session == null ? null : application.Session["useID"];
                 if (sessionObj==null)
                 {
                     response.Redirect("~/Default.htm");
                 }
             }
         }
     }
 }

Afin d'obtenir l'effet de filtrage, la classe Filters doit implémenter l'interface IHttpMoeld. Pour implémenter cette interface, il existe deux méthodes, l'une est Dispose et l'autre est Init. Le paramètre de Init est une instance de type HttpApplication. Utilisez cette instance pour enregistrer certains événements. L'URL étant désormais filtrée, l'événement AcquireRequestState est enregistré. Les événements similaires sont répertoriés comme suit

Code dimplémentation du filtrage dURL dans ASP.NET

Pour obtenir l'url à rediriger, vous pouvez utiliser l'attribut CurrentExecutionFilePath de la requête, et pour obtenir le suffixe du fichier demandé, vous peut utiliser CurrentExecutionFilePathExtension Quant aux règles à juger, cela dépend de la demande. Ce que je fais ici, c'est déterminer si la session existe lors de la demande. Si elle n'existe pas, elle reviendra à la page de connexion. Puisque Session est utilisé, une exception sera levée lors de l'ouverture de la page. Le message d'exception est "L'état de la session n'est pas disponible dans ce contexte.". Après avoir implémenté l'interface IRequiresSessionState, aucune exception ne sera levée.

De plus, vous devez également ajouter le code suivant sous le nœud du fichier de configuration Web.config

<httpModules> 
<add name="filters" type="QTJZ.Filters"/> 
</httpModules>

L'attribut type est le nom complet de la classe Filters ci-dessus

Pour plus d'articles liés au code d'implémentation du filtrage d'URL dans ASP.NET, veuillez faire attention au site Web PHP chinois !
Déclaration:
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