2013-09-28 11 views
5

Referente: Microsoft.AspNet.FriendlyUrlsAsp.net 4,0 autenticazione basata su form e FriendlyUrls

Sto usando l'autenticazione di form e FriendlyUrls. Ho una sottodirectory di nome "Account" al suo interno contiene il file "Register.aspx". Devo concedere l'autorizzazione al file "Register.aspx" e negare l'autorizzazione per tutti gli altri file tramite web.config. Ho provato varie impostazioni, ma il file Register.aspx non ottiene il permesso.

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> 

risposta

0

Prova questa sottostante Codice, modificare * invece di?

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

vedere questo molto buone spiegazioni: http://weblogs.asp.net/gurusarkar/archive/2008/09/29/setting-authorization-rules-for-a-particular-page-or-folder-in-web-config.aspx

+0

L'ho già provato. Ma quando si accede al percorso "Account/Register", sono reindirizzato alla pagina di accesso. – Marcoscdoni

1

Ho avuto questo stesso problema con FriendlyURLs e forme di autenticazione (OWIN però). Cercando di accedere alla pagina del contenuto autorizzato tentato di reindirizzare a/Account/Login? ReturnUrl =% 2FAccount% 2FLogin, solo il reindirizzamento è rimasto bloccato in un ciclo infinito fino a quando la stringa della query ha superato la lunghezza massima !!! L'unico modo per scoprirlo era inserire la pagina di accesso (o qualsiasi altra pagina che consentiva l'accesso immediato) in una cartella a sé stante e concedere l'accesso a quella cartella invece della pagina stessa. Quindi, se ho avuto/account/Login, vorrei aggiungere:

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

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

Vedo che hai aggiunto una regola per il percorso/account, ma è impostato per negare. Non sono sicuro se lo avessi cambiato in Allow in locale o no ...

Anche se sto usando la libreria di autenticazione dei moduli di MS OWIN, non quella predefinita di ASP.Net, mi aspetto che quanto sopra funzionerà per lo standard uno pure. Cordiali saluti, la mia autenticazione dell'autenticazione di form ha il seguente aspetto:

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 
     }); 
    }