2013-09-28 10 views
5

Referente: Microsoft.AspNet.FriendlyUrlsAsp.net 4,0 Forms Authentication i FriendlyUrls

Używam uwierzytelniania formularzy i FriendlyUrls. Mam podkatalog o nazwie "Konto" w nim zawiera plik "Register.aspx". Muszę nadać uprawnienia do pliku "Register.aspx" i odmówić pozwolenia na wszystkie inne pliki za pośrednictwem pliku web.config. Próbowałem różnych ustawień, ale plik Register.aspx nie uzyskał pozwolenia.

web.config

<system.web> 
    <authentication mode="Forms"> 
     <forms loginUrl="Account/login" name="LOGIN" defaultUrl="Account/Logged" timeout="15" cookieless="UseDeviceProfile" protection="All" slidingExpiration="true" /> 
    </authentication> 
    </system.web> 

    <location path="Account"> 
    <system.web> 
     <authorization> 
     <deny users="?" /> 
     </authorization> 
    </system.web> 
    </location> 

    <location path="Account/Register"> 
    <system.web> 
     <authorization> 
     <allow users="?" /> 
     </authorization> 
    </system.web> 

Odpowiedz

0

Spróbuj poniżej kod, zmień * zamiast?

<location path="Account/Register"> 
    <system.web> 
     <authorization> 
     <allow users="*" /> 
     </authorization> 
    </system.web> 

zobaczyć to bardzo dobre wyjaśnień: http://weblogs.asp.net/gurusarkar/archive/2008/09/29/setting-authorization-rules-for-a-particular-page-or-folder-in-web-config.aspx

+0

Już to wypróbowałem. Ale kiedy dostęp do trasy "Konto/Rejestr" jest dostępny, jestem przekierowywany na stronę logowania. – Marcoscdoni

1

miałem ten sam problem z FriendlyURLs i form uwierzytelniania (OWIN chociaż). Próbujesz uzyskać dostęp do strony z autoryzowaną zawartością, która próbowała przekierować do/Konto/Login? ReturnUrl =% 2FAcount% 2FLogin, tylko przekierowanie utknęło w nieskończonej pętli, dopóki ciąg zapytania nie przekroczył maksymalnej długości !!! Jedynym sposobem, jaki mogłem znaleźć, było umieszczenie strony logowania (lub innych stron, które umożliwiają dostęp anon) w folderze i przyznanie dostępu do tego folderu zamiast samej strony. Więc gdybym miał/Konto/Logowanie, dodałbym:

<system.web>  
    <authorization> 
     <deny users="?" /> 
    </authorization> 
    </system.web> 

    <location path="Account"> 
    <system.web> 
     <authorization> 
     <allow users="*" /> 
     </authorization> 
    </system.web> 
    </location> 

widzę dodałeś regułę dla ścieżki/rachunku, ale ustawić go odmówić. Nie jestem pewien, czy zmieniłeś to na Zezwalaj lokalnie, czy nie ...

Mimo że używam biblioteki uwierzytelniania formularzy MS OWIN, a nie domyślnej wbudowanej ASP.Net, spodziewam się, że powyższe zadziała w przypadku standardowego także jeden. FYI, konfiguracja autoryzacji uwierzytelniania moich formularzy wygląda następująco:

public void ConfigureAuth(IAppBuilder app) 
    { 
     app.UseCookieAuthentication(new CookieAuthenticationOptions 
     { 
      AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie, 
      AuthenticationMode = AuthenticationMode.Active, 
      LoginPath = new PathString("/Account/Login"), 
      LogoutPath = new PathString("/Account/Logout"), 
      ExpireTimeSpan = TimeSpan.FromHours(12), 
      SlidingExpiration = true, 
      CookieName = "MyCookieName.Session", 
      CookieSecure = CookieSecureOption.SameAsRequest, 
      // Required for AJAX calls 
      CookieHttpOnly = false 
     }); 
    } 
Powiązane problemy