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
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
<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 !