Mam dwie części strony internetowej, nad którą pracuję: jedna używająca zwykłego uwierzytelniania formularzy, a druga używa uwierzytelniania opartego na HMAC. Oparty na formularzach działa tak samo normalnie (z wyjątkiem korzystania z niestandardowego dostawcy członkostwa).Inny tryb uwierzytelniania dla różnych obszarów
Najbardziej frustrujące jest to, że domyślnie, jeśli zdecyduje się na użycie uwierzytelniania formularzy, przekierowuje wszystkie 401 odpowiedzi na loginUrl określone w głównym pliku Web.config pod znacznikiem uwierzytelnienia. Aby wyłączyć tę funkcję dla części HMAC mojej witryny, utworzyłem osobny obszar, w którym te kontrolery są aktywne. Jednak niezależnie od tego, gdzie umieszczam znacznik <authentication mode="None"></authentication>
(niezależnie od tego, czy znajduje się on w obszarze/widoki Web.config, Web.config Umieściłem w folderze obszaru lub pod znacznikiem lokalizacji w głównym pliku Web.config (robiąc to faktycznie powoduje błąd związany z tym znacznikiem, który nie należy do niego)) Nie mogę sprawić, aby to przestało przekierowywać wszystkie 401 do loginUrl.
Każda pomoc będzie bardzo ceniona, ponieważ sprawia, że wyrywam sobie włosy.
Nawiasem mówiąc, to pytanie zostało zadane na różne sposoby co najmniej 2times bez odpowiedzi (wykonalnych). Podczas gdy moja koncentruje się na ustawianiu trybu uwierzytelniania na None, ich ogólnie koncentruje się na zmianie ról dla ścieżek (co moim zdaniem jest łatwiejsze do wykonania przy użyciu atrybutu [Authorize(Roles="role1,role2,role3")]
dla każdej metody), co sprawia, że moje pytanie jest trochę inne. Jeśli to niemożliwe, proszę, powiedz mi, abym mógł znaleźć lepszy sposób na zrobienie tego.
Czy to nadal ma miejsce w grudniu 2013 r. W wieku MVC5? – Kjensen
@Kjensen, tak, jest to nieodłącznym ograniczeniem nowszego modelu rurociągu IIS. Jeśli musisz uwierzytelnić się z dwóch różnych źródeł, możesz użyć uwierzytelniania formularzy i napisać niestandardowy program MembershipProvider. Włączanie obu formularzy i uwierzytelnianie systemu Windows w tym samym czasie nie jest obsługiwane. – JamieSee