2013-09-28 8 views
5

Referente: Microsoft.AspNet.FriendlyUrlsAsp.net 4.0 Formularauthentifizierung und FriendlyUrls

Ich Formularauthentifizierung und FriendlyUrls verwenden. Ich habe ein Unterverzeichnis namens "Account" darin enthält die Datei "Register.aspx". Ich muss der Datei "Register.aspx" die Berechtigung erteilen und die Berechtigung für alle anderen Dateien über die Datei web.config verweigern. Ich habe verschiedene Einstellungen versucht, aber die Datei Register.aspx bekomme keine Erlaubnis.

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> 

Antwort

0

Versuchen Sie dies unter Code ändern * statt?

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

diese sehr gute Erklärungen Siehe: http://weblogs.asp.net/gurusarkar/archive/2008/09/29/setting-authorization-rules-for-a-particular-page-or-folder-in-web-config.aspx

+0

Ich habe das schon versucht. Aber wenn auf die Route "Account/Register" zugegriffen wird, werde ich auf die Login-Seite weitergeleitet. – Marcoscdoni

1

Ich hatte das gleiche Problem mit FriendlyURLs und Formularauthentifizierung (OWIN obwohl). Der Versuch, auf die autorisierte Inhaltsseite zuzugreifen, hat versucht, zu/Konto/Login umzuleiten? ReturnUrl =% 2FAccount% 2FLogin, nur die Umleitung blieb in einer Endlosschleife hängen, bis die Abfragezeichenfolge die maximale Länge überschritt !!! Die einzige Möglichkeit, die ich finden konnte, war, die Anmeldeseite (oder andere Seiten, die den Zugriff erlauben) in einen eigenen Ordner zu legen und den Zugriff auf diesen Ordner anstatt auf die Seite selbst zu gewähren. Also, wenn ich/Konto hatte/Login, möchte ich hinzufügen:

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

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

Ich sehe, Sie haben eine Regel für den/Kontopfad hinzugefügt, aber gesetzt haben, es zu leugnen. Ich bin nicht sicher, ob Sie das lokal zulassen oder nicht ... geändert hatten.

Obwohl ich MS OWIN Formularauthentifizierungsbibliothek, nicht die Standard-ASP.Net Built-in verwenden, erwarte ich, dass das oben für den Standard funktioniert einer auch. FYI, meine Formularauthentifizierung Auth-Setup sieht so aus:

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