Also, ich habe Web-Anwendungen mit web.configs wie so:Ermitteln, ob die aktuelle Seite eine Autorisierung erfordert?
<authorization>
<deny users="?"/>
</authorization>
...
<location path="SomeUnsecuredPage.aspx">
<system.web>
<authorization>
<allow users="*"/>
</authorization>
</system.web>
</location>
Mit anderen Worten, die meisten Seiten erfordern eine Authentifizierung und Autorisierung, einige aber auch nicht.
Dann habe ich ein IHttpModule, das von allen verschiedenen Anwendungen verwendet wird. Alles, was ich tun möchte, ist zu überprüfen, ob die aktuelle Anfrage überhaupt "gesichert" ist. Wenn die Seite keine Autorisierung erfordert, möchte ich nicht, dass mein IHttpModule überhaupt etwas tut. Ich verwende FormsAuthentication und nehme an, dass FormsAuthentication diese Informationen bereits irgendwo zwischengespeichert hat, oder? Da diese Prüfung ständig ausgeführt wird, muss sie sehr schnell sein.
Ich abonniere derzeit die HttpApplication.AuthorizeRequest, aber dieses Ereignis wird überraschend auch für Ressourcen ausgelöst, die anonymen Zugriff ermöglichen.
Irgendwelche Ideen? Danke fürs Lesen!
+1 zum Erstellen einer Singleton IPrincipal-Instanz. Sehr nützliches Stück Code. Es muss jedoch keine Instanz von "UrlAuthorizationModule" erstellt werden. Es genügt, die statische Methode 'CheckUrlAccessForPrincipal' zu verwenden. –