Comment puis-je accéder au module FormsAuthenticationModule actuel dans un environnement de confiance moyenne?
-
08-07-2019 - |
Question
J'ai dans mon application un module HttpModule qui se connecte à l'événement Authenticate du FormsAuthenticationModule avec le code suivant:
public void Init(HttpApplication context)
{
FormsAuthenticationModule faModule =
(FormsAuthenticationModule)context.Modules["FormsAuthentication"];
faModule.Authenticate +=
new FormsAuthenticationEventHandler(faModule_Authenticate);
}
Malheureusement, l'appel à context.Modules a échoué car l'application doit s'exécuter dans un environnement de confiance moyenne. Existe-t-il un autre moyen de participer à cet événement?
La solution
C’est un problème difficile: vous ne pouvez même pas accéder à la collection de modules à partir de votre fichier d’application global.
Vous pouvez essayer d'appeler votre code personnalisé à partir du gestionnaire AuthenticateRequest dans Global:
protected void Application_AuthenticateRequest(object sender, EventArgs e)
{
// Call your module's code here..
}
Vous ne pouvez pas extraire votre module personnalisé de la collection, vous avez donc besoin d'une référence statique à la bibliothèque de votre module.
Autre que l’octroi de AspNetHostingPermission ( comme indiqué pour d'autres autorisations ici ) sur votre site Web au niveau de la machine web.config, je suis à court d’idées!