Ich möchte eine statische Website mit Gatsby erstellen. Das ist alles in Ordnung, aber ich möchte eine Authentifizierung und Autorisierung haben, da es sich um eine interne Site handelt - sie sollte nur von Personen in meiner Firma aufgerufen werden. Ich habe darüber nachgedacht, und ohne eine Serverkomponente ist es unmöglich (?), Benutzer ohne irgendeine Art von Backend sicher zu authentifizieren. Ich dachte, ich könnte ASP.NET Core verwenden, um statische Dateien bereitzustellen und vor diesen statischen Dateien Google (for Work) -Authentifizierung und -Autorisierung durchführen zu lassen.Dienen statische Dateien hinter Google-Authentifizierung
Es scheint wie die StaticFileHandler
doesn't support authorization by design, da es nur für die Bereitstellung statischer Dateien verantwortlich ist, die öffentlich zugänglich sind. Es gelang mir, die Google-Authentifizierung unter Verwendung des Attributs Authorize
für meine Root-Aktion (die auf '/' hört) und Login-Aktionen, die eine Challenge
ausstellten und der Benutzer zur Authentifizierung an Google weitergeleitet wurde, zu erhalten. Weitere Informationen in der Dokumentation zum Umgang mit statischen Dateien finden Sie unter:
Das statische Dateimodul bietet keine Berechtigungsprüfungen. Alle von Ihnen bereitgestellten Dateien, einschließlich derer unter wwwroot, sind öffentlich verfügbar. Um zu dienen Dateien basierend auf Zulassung:
- Shop sie außerhalb von wwwroot und einem beliebigen Verzeichnis zugänglich für die statische Datei Middleware und
- Servieren Sie sie durch eine Controller-Aktion, Zurückgeben eines Fileresult, wenn die Genehmigung angewandt wird
So, jetzt habe ich eine Index
Aktion auf meine HomeController
, die wie folgt aussieht:
[Authorize]
public IActionResult Index()
{
// TODO: Return static files based on incoming requested path.
return View();
}
Ich bin nicht sehr glücklich mit dieser Lösung. Soll ich die ganze Sache mit Middleware arbeiten lassen anstatt MVC zu benutzen? Ist das überhaupt der richtige Weg? Gibt es bessere Möglichkeiten, dies zu tun?