Mam problemy z zezwoleniem na dostęp do konkretnej roli do konkretnej strony w podkatalogu.ASP.NET Forms Auth Umożliwianie dostępu do określonego pliku w podkatalogu, gdy odmówi się wszystkim innym.
Moja aplikacja ASP.NET ma katalog, ~/Forms/Administration, który ma ograniczony dostęp. Istnieje określony plik ~/Forms/Administration/Default.aspx, który chcę nadać 1 dodatkowy dostęp do roli użytkownika, a także rolę administratora.
W ~/Formularze/Administration, mam pliku web.config, który wygląda tak:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.web>
<authorization>
<allow roles="Administrator, User" />
<deny users="*"/>
</authorization>
</system.web>
<location path="Forms/Administration/Default.aspx">
<system.web>
<authorization>
<allow roles="Administrator, User, AdditionalUser" />
</authorization>
</system.web>
</location>
</configuration>
Użytkownik Admin działa dobrze, ale nie zawsze AdditionalUser. Próbowałem wielu rzeczy - wykaz lokalizacji jako
<location path="Forms/Administration/Default.aspx">
I jak
<location path="~/Forms/Administration/Default.aspx">
Czy zaprzeczyć = „*” od pierwszego generycznego reguły biorąc precedens? Próbowałem zmieniając
<deny users="*"/>
Aby
<deny users="?"/>
Ale to kończy się dając dostęp AdditionalUser do wszystko. Propozycje?
EDYCJA: Próbowałem umieścić konkretną lokalizację zezwalając na przed ogólnej reguły odmowy, w przypadku, gdyby porządek znaczenia. Taki sam problem.
AKTUALIZACJA: Brakuje mi czegoś tutaj: usunąłem deny * config i pozostawiłem tylko sekcję dotyczącą lokalizacji. Następnie, zamiast zezwalać na pewne role, ustawiam opcję odrzucania wszystkich (*). Jednak w ogóle nie zaprzeczam, kiedy się loguję. Zredukowalem nawet regue, by nie bylo specyficzne dla pliku, ale dotyczy calego katalogu i nie zaprzecza mi nic. Jednak oryginalne reguły nie dotyczące lokalizacji działają, więc wiem, że ten plik konfiguracyjny jest czytany.
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<location path="Forms/Administration">
<system.web>
<authorization>
<deny users="*" />
</authorization>
</system.web>
</location>
</configuration>
Gah, to ma sens. Wypróbuję to rozwiązanie tak szybko, jak tylko będę mógł. – Matt
Chris, możesz mi pomóc z http://stackoverflow.com/questions/15882511/how-do-i-conconfigure-asp-net-forms-authentication-to-deny-only-a-specific-url. Ponieważ potrzebuję tylko jednego użycia, aby uzyskać dostęp, właśnie wprowadzam jego dane do logowania –
Lol @NatePet, skomentowałem twoje pytanie. Mam nadzieję, że pomaga –