2014-09-29 14 views
8

Potrzebuję zabezpieczenia całego folderu statycznych plików HTML. Celem jest to, że użytkownik nie może uzyskać dostępu do tych plików, chyba że są one uwierzytelnione i mają odpowiednią rolę.Autoryzacja dla plików statycznych w ASP.NET MVC w/Owin

Mamy uwierzytelnianie oparte na plikach cookie skonfigurowane za pomocą OWIN, ale bez względu na to, co próbuję, nie mogę wymyślić prawidłowej kombinacji zmian, aby wymagać uwierzytelnienia w folderze.

Pierwszy problem polega na tym, że usługi IIS całkowicie pomijają ASP.NET i po prostu obsługują pliki. Myślę, że prawdopodobnie można to obejść, ustawiając parametr runAllManagedModulesForAllRequests na wartość true. Ale dokąd pójdę?

Próbowałem wypychania elementów w Web.config, aby wymagały odpowiednich ról, ale to po prostu skutkuje KAŻDYM żądaniem odmowy (prawdopodobnie dlatego, że nie sprawdza właściwego cookie lub czegoś takiego).

Spędziłem cały dzień na tym i już niedługo stracę rozum.

Czy ktoś rozwiązał ten problem?

+0

Utwórz klasę, która implementuje 'IHttpHandler', i umieść tam swoje zabezpieczenia. Zobacz http://stackoverflow.com/q/1146652 –

+0

W tym scenariuszu chciałbym umieścić moje sprawdzanie roli i takie w RouteHandler? Nie jestem pozytywny, ale to nie wydaje się być właściwym miejscem na takie rzeczy. –

+1

Następnie serwuj plik ze standardowej metody kontrolera. Pewnie tak bym to zrobił. Możesz je załadować z wyprzedzeniem, bez względu na to, jakie zabezpieczenia chcesz, a bogowie MVC będą zadowoleni. –

Odpowiedz

3
  1. IIS obsługuje pliki statyczne, jeśli chcesz przystanku ten można usunąć domyślnej obsługi plików statycznych i od każdego wniosku jest serverd przez MVC/OWIN.
  2. niż zrobić statyczną obsługę plików i zezwolenia w kontrolerze : Listen/mapa trasy, gdzie znajdują się pliki statyczne

usunąć domyślnej obsługi plików statycznych dodać do web.config plik:

<configuration> 
    <system.webServer> 
     <handlers> 
      <remove name="StaticFile" /> 
     </handlers> 
    </system.webServer> 
</configuration> 
+0

Jak mogę to zrobić z kątowym? Moja aplikacja internetowa została napisana w Angular 1.6 za pomocą maszynopisu. Jeśli usuniemy moduł StaticFile, plik index.html nie zostanie wyświetlony i wszystko się zepsuje. Muszę tylko ograniczyć dostęp do folderu ** załączniki ** oraz plików statycznych/multimedialnych serwera tylko do uprawnionych użytkowników. Jakieś pomysły? – Nexus

+0

spójrz, może ci to pomóc https://stackoverflow.com/a/11258217/715224 –

+0

Jesteś kumpelkiem! Wielkie dzięki, lemme spójrz i spróbuj. Bardzo zobowiązany. – Nexus