Autorisierung statische Dateien ASP.NET Core Website

Nun hat sich Microsoft entschlossen für ein asp.net core Projekt die statischen Files wie HTML, CSS oder JS in den Ordner wwwroot auszulagern. So trennt man aktive Teile (Pages) von den benötigten Ressourcen. Ich will nicht verhehlen, das mich der Ansatz per web.config mehr begeistert.

ASPNETCore setzt dagegen auf Konfiguration per Code und hier in der Datei startup.cs, die nebenbei bemerkt dadurch auch nicht übersichtlicher wird. Per AddRazorPageOptions (in AddRazorPage dotnet core 3 und AddMvc dotnet Core 2.2) werden die Options auf Page oder Verzeichnis gesetzt. Zwar existiert auch das aus ASP.NET MVC bekannte Authorize Attribut, aber bei Razor nur auf Page View Ebene. In jedem Fall ist die statische Resource davon ausgenommen (also gif, jpg und co) Wenn  man also die Rechte darauf einschränken möchte, muss man einen anderen Weg beschreiten.

Die Microsoft asp.net core Dokumentation schlägt allen ernstes vor, zusätzlich zu wwwroot einen Bereich anzulegen. Der Zugriff darauf wird dann über Razor Pages und File Open realisiert. Finde ich schräg.

Variante 2 nimmt einen Middleware. Da dieses Konzept relativ leicht umzusetzen ist und auch im Nachgang einen gewisse Codetransparenz aufweist wie folgt in der Datei Startup.cs einfügen.

   1:  app.Map("/ordner", subApp => {
   2:     subApp.Use(async (context, next) =>
   3:      {
   4:       if (!context.User.Identity.IsAuthenticated)
   5:         {
   6:            context.Response.StatusCode = StatusCodes.Status401Unauthorized;
   7:         }
   8:      });
   9:  });
Kommentare sind geschlossen