2012-08-11 16 views
5

Mam witrynę internetową z niektórymi obszarami wymagającymi logowania za pomocą uwierzytelniania opartego na formularzach, używając mojego własnego dostawcy, który łączy się z bazą danych.Mieszanie uwierzytelniania podstawowego uwierzytelniania i formularzy w ASP.NET MVC3

Strona jest w podglądzie, więc chcę chronić całą witrynę za pomocą podstawowego uwierzytelniania, aby zapobiec nieautoryzowanemu dostępowi przed jego uruchomieniem.

Problem polega na tym, że uwierzytelnianie podstawowe i formularzy znajduje się na stronach, które będą publiczne, zamiast tego należy przejść do formularza logowania.

W jaki sposób mogę zachować uwierzytelnianie formularzy na potrzeby logowania członków i dostępu do portalu, ale chronić całą witrynę przed dostępem publicznym przed uruchomieniem za pomocą podstawowego uwierzytelniania?

Odpowiedz

0

Myślę, że powinieneś być w stanie zaspokoić swój przypadek użycia w następujący sposób.

W ramach reguł autoryzacji sieci .Net utwórz regułę odmowy dla anonimowych użytkowników.

Na stronie Uwierzytelnianie włącz uwierzytelnianie Podstawowe i Formularze. Wyłącz wszystkie inne typy uwierzytelniania. Powinno to wymagać od wszystkich użytkowników uwierzytelniania za pomocą podstawowego uwierzytelniania, aby korzystać z witryny bazowej, a następnie wymagać logowania przy użyciu formularzy w częściach witryny wymagających niestandardowego uwierzytelnienia.

+0

Dzięki Alex. Próbowałem, ale mam ten sam problem. Problem polega na tym, że wszystkie strony ASP.NET (kontrolery) wymagają logowania, nawet te, które mają dodany atrybut [AllowAnonymous], opisany tutaj: http://blogs.msdn.com/b/rickandy/archive/2012/03/23/ zabezpieczenie-twojej-asp-net-mvc-4-app-and-the-new-reciponymous-attribute.aspx. – DaveO

+0

Używam MVC3 i mam to do pracy "On My Machine", co wiem, nie pomaga. W powyższej konfiguracji mam niestandardowy filtr LogonAuthorize: AuthorizeAttribute, który wyklucza niektóre kontrolery z wymogu filtrowania. if (! (filterContext.Controller jest AccountController)) { base.OnAuthorization (filterContext); }. Nie jestem pewien, w jaki sposób będzie to wchodzić w interakcje z atrybutem AllowAnonymous (którego użyję, gdy przejdę do MVC4). – AlexC

+0

Próbowałem dodać kontroler, jak pokazano w powyższym kodzie, ale wciąż ten sam problem :(Myślę, że potrzebuję jakiegoś modułu http lub coś jak narzeka IIS z "Nie można użyć zarówno metody uwierzytelniania opartej na wyzwaniach, jak i metody uwierzytelniania opartego na przekierowaniu logowania w tym samym czasie. "To jest sytuacja tymczasowa, więc naprawdę nie chcę zagłębiać się w zawiłości przetwarzania mieszanego uwierzytelniania lub pisania modułów http, jeśli mogę pomóc! To dziwne, że IIS /Asp.Net nie może obsłużyć bloku globalnego (uwierzytelnianie podstawowe) i logowania opartego na formularzach, gdy moje logowanie do formularzy jest oparte na bazie danych db. – DaveO

Powiązane problemy