2012-03-28 11 views
0

ich bin newb in asp.net. Ich arbeite für ein Beispiel mit Mitgliedschaftsklasse in ASP.NET. Ich habe einige Seiten in meinem Projekt, z. default.aspx, page1.aspx, page2.aspx. Ich habe Login-Steuerelement in default.aspx gesetzt. Jetzt möchte ich die Authentifizierung des Benutzers überprüfen, wenn der Benutzer auf eine Seite zugreifen möchte. Bereits habe ich dieses Ding erreicht, um unter Page_Load Event in jeder Seite unter snippest zu setzen. Aber ich möchte einen Vorschlag, damit ich diesen doppelten Code von jeder Seite entfernen kann. und Implementieren einer Logik, die auf jeder Seite anwendbar sein kann. Muss ich global.asax oder eine Klasse verwenden, die auf allen Seiten vererbt werden könnte?gemeinsame Authentifizierungslogik in asp.net Mitgliedschaft

if(!HttpContext.Current.User.Identity.IsAuthenticated) 
     { 
Response.redirect("default.aspx"); 

     } 
+0

Werfen Sie einen Blick auf diese Tutorials: http://www.4guysfromrolla.com/articles/120705-1.aspx ... http://msdn.microsoft.com/en- us/library/yh26yfzy.aspx ... http://www.asp.net/web-forms/videos/authentifizierung. Hier ist eine einfache, aber vollständige: http://msdn.microsoft.com/en-us/library/xdt4thhy%28v=vs.100%29.aspx –

Antwort

2

Sie können Ihre Standard-Login-Seite von dem Authentifizierungs-Elemente der web.config-Datei im Stammverzeichnis Ihrer asp.net Anwendung einrichten.

ein Beispiel ...

<authentication mode="Forms"> 
    <forms loginUrl="Login.aspx" 
      protection="All" 
      timeout="30" 
      name=".ASPXAUTH" 
      path="/" 
      defaultUrl="default.aspx" 
      cookieless="UseDeviceProfile" 
      enableCrossAppRedirects="false" /> 
    </authentication> 

auf Dateien und Ordner Kontrolle des Zugriffs über das Berechtigungselement erfolgt.

ein Beispiel ...

<authorization> 
    <allow roles="Admin" /> 
    <deny users="?" /> 
</authorization> 

Siehe the documentation für weitere Informationen und weitere Beispiele.

+0

in Ordnung .. Es funktioniert ordnungsgemäß mit meinem Code. Zunächst einmal vielen Dank. Aber was soll ich tun, wenn ich den Zugriff auf die Seite für bestimmte Benutzer zulassen muss, die über Administrator- oder ähnliche Funktionen verfügen? –

+0

Sie können Rollen im Autorisierungselement angeben, haben das Beispiel für Sie aktualisiert. – Baldy

0

In .net können Sie dies innerhalb der web.config mit dem authorization Element festlegen.

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

Dadurch wird alle Benutzer verweigern, die nicht authentifiziert ist, den Zugang zu einer anderen Seite neben der Login-Seite, die Sie im authentication Elemente angeben.

<system.web> 
    <authentication mode="Forms"> 
    <forms loginUrl="Login.aspx" 
     protection="All" 
     timeout="30" 
     name=".ASPXAUTH" 
     path="/" 
     requireSSL="false" 
     slidingExpiration="true" 
     defaultUrl="default.aspx" 
     cookieless="UseDeviceProfile" 
     enableCrossAppRedirects="false" /> 
    </authentication> 
</system.web> 

Wie aus genommen here

+0

okay .. Es funktioniert richtig mit meinem Code. Zunächst einmal vielen Dank. Aber was soll ich tun, wenn ich den Zugriff auf die Seite für bestimmte Benutzer erlauben muss, die Administrator- oder ähnliche Aufgaben haben? –

0

Für die Zwecke der Zulassung ist Baldy korrekt.

Für jeden anderen Code, den Sie möglicherweise nicht pro Seite duplizieren möchten, möchten Sie ihn möglicherweise in eine Masterpage einfügen, zu der alle Ihre Seiten gehören.

Masterpages: http://msdn.microsoft.com/en-us/library/wtxbf3hh.aspx