2009-03-13 6 views
2

Ich habe als ASP.Net 2.0 Website mit SQL Server als Datenbank und C# 2005 als die Programmiersprache. Die Website ist fast fertig und alle Links funktionieren gut. Aber ich möchte verhindern, dass normale Benutzer ein paar Seiten öffnen. Wenn ein Benutzer auf diese spezifischen Links klickt, wird eine andere Seite geöffnet, die ein ASP-Login-Steuerelement enthält. Der Benutzer muss eine gültige Benutzer-ID und ein gültiges Kennwort angeben, um die Links anzuzeigen, die auf die restriktiven Seiten verweisen. Aber als Neuling weiß ich nicht, wie ich die volle Power des ASP-Login-Steuerelements nutzen kann. Wenn ein Benutzer die genaue URL der eingeschränkten Seiten erfährt, kann er die Anmeldesteuerung umgehen und direkt auf diese Seiten zugreifen, indem er die URL in die Adressleiste eingibt. Ich möchte das verhindern. Wenn der Benutzer die URL direkt in die Adresszeile eingibt, möchte ich, dass die Seite selbst überprüft, ob der Benutzer über das Login-Steuerelement validiert wurde und entweder die Seite anzeigt oder den Benutzer auf die Anmeldeseite verweist.Verhindern, dass Besucher bestimmte Seiten öffnen

Wie implementiere ich diese Funktion?

Vielen Dank.

Lalit Kumar Barik

Antwort

0

Sie sollen die Benutzer bei jedem Page_Load() Ereignisse auf den Seiten im Zustand protokolliert überprüfen, die Berechtigungen steuern muß, oder einfach den in einem CS-Authentifizierungscode setzen:

Mehr Informationen über den Berechtigungs Abschnitt finden Sie hier Datei, die in allen anderen Dateien enthalten sein wird.

Abhängig von der ausgewählten Authentifizierungsarchitektur (verwenden Sie einfach die Sitzungsvariable oder erstellen Sie eine Sitzungs-ID mit Cookies), müssen Sie Ihren Code entsprechend anpassen.

Der einfachste Weg wäre, Anmeldungen über das Sitzungsobjekt zu verwalten. Wenn sich der Benutzer ordnungsgemäß mit den richtigen Anmeldeinformationen anmeldet, können Sie Session["logged_in"] = true festlegen. Und auf jedem Page_Load() Ereignis der Seiten, die Sie schützen möchten, müssten Sie die folgende Überprüfung durchführen.

diesen Code hinzufügen zu Beginn Ihrer Page_Load() Funktion:

if (Session["logged_in"] != null && (bool)Session["logged_in"] == true){ 
    Response.Write("I'm logged in!"); 
    }else{ 
    Response.Write("I'm not logged in."); 
    } 

Bitte denken Sie daran, dass dies für eine einfache Intranet-Anwendungen in Ordnung ist, aber wenn man in sicheren Login-Architekturen erhalten mag, lesen mehr über das Thema, da der ausschließliche Zugriff auf Session-Variablen nicht sicher ist, da Sessions mit einem Hijacking belegt werden können.

+0

Während der Ausführung der Zeile if (SESSION ['logged_in']! = null && SESSION ['logged_in'] == true) Ich bekomme folgende Fehlermeldung: Operator '==' kann nicht auf Operanden vom Typ 'Objekt' und 'Bool' angewendet werden Irgendwelche Lösungen? Lalit Kumar Barik – LalitBarik

+0

Wahrscheinlich muss eine Besetzung gemacht werden. Ändere den Code auf: if ((bool) SESSION ['logged_in']! = Null && (bool) SESSION ['logged_in'] == true) und sag mir, wie es geht. Ich werde das morgen offiziell testen. Vielen Dank. –

+0

if (SESSION ['logged_in']! = Null && (bool) SESSION ['logged_in'] == true) - Versuchen Sie nicht, den Null-Check auszugeben. –

8

Sie werden einen Blick auf die location secton der Web-Config zu nehmen.

In diesem Abschnitt können Sie die Zugriffsrechte auf Seitenebene definieren nach unten, so wäre es keine Rolle, ob die Benutzer die URL der gesicherten Seiten wüsste, würde ASP.NET lassen Sie sie nicht in.

?

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

Die "deny users =" "" Bit sagt: "verweigern alle anonymen Benutzer":

So würde man so etwas hinzuzufügen.

Sie können auch festlegen, dass nur bestimmte Rollen zugelassen werden, wenn Sie diese verwenden.

authorization Element

+0

Zhaph, tut diese Lösung Benutzer ad Benutzernamen? Können Sie Ihre eigene Benutzerliste über eine Kombination aus Benutzername // Passwort angeben? –

+0

Um ehrlich zu sein, nimmt diese Lösung an, dass Sie das ASP.NET-Mitgliedschaftssystem verwenden - entweder über den integrierten SQL-Provider oder Ihren eigenen Provider: http://bit.ly/w5yX. Wie auch immer, ja, Sie können Benutzername/Passwort-Kombinationen in credentials/users Element in der web.config: http://bit.ly/11sRQ3 –

+0

bieten Dies ermöglicht Ihnen auch, Dinge wie if (Request.IsAuthenticated) zu verwenden, um zu überprüfen, ob der Benutzer ist eingeloggt, anstatt sich auf Sitzungsvariablen zu verlassen, usw.: http://bit.ly/yJY9M –

2

Dies ist Essen für die ASP.Net-Mitgliedschaft Dienstleistungen. Werfen Sie einen Blick auf this article und auch the great series über bei 4GuysFromRolla.

Mit der Mitgliedschaft können Sie Benutzer-/Passwortinformationen speichern, die unter anderem vom Login-Steuerelement verwendet werden. In Verbindung mit der Berechtigungskonfiguration können Sie den Zugriff auf bestimmte Seiten direkt auf bestimmte Benutzer oder Rollen beschränken.

0

Ich würde einen Rollentabellen für Benutzer erstellen. Jeder, der sich anmeldet, erhält die "normale" Rolle. Spezielle Verwendungen, die Sie anhand ihrer Anmeldeinformationen angeben, erhalten Rollen zugewiesen, um auf eine Seite oder einen Abschnitt Ihrer Website zuzugreifen. Bestimmte Benutzer (wie Sie selbst) erhalten eine Administratorrolle, die ihnen automatisch Zugriff auf alles ermöglicht.

Eine Funktion namens CheckIsInRoles ('Admin', 'Normal', 'WhateverRoleYouChoose') auslösen, die einen booleschen Wert zurückgibt. Wenn true, lade die Seite. wenn nicht, nicht.

Noch besser, zeigen Sie keinen Link, wenn nicht in der richtigen Rolle.

Dies hat den zusätzlichen Vorteil, dass sich jeder einmal anmeldet und dann auf alle Seiten zugreift, ohne dass er sich jedes Mal neu anmelden muss.

+0

Vielen Dank für Ihre Erklärung zum Thema Rollen. Ich bin mir sicher, dass ich das Wissen in meinen zukünftigen Webseiten verwenden werde. Leider müssen sich die normalen Benutzer in der aktuellen Website nicht anmelden. Die Anmeldung ist nur für wenige Personen erforderlich, um auf die eingeschränkten Seiten zuzugreifen. Ich brauchte nur eine einfache Einschränkung. – LalitBarik

Verwandte Themen