Frage

Ich habe als ASP.Net 2.0 Webseite mit SQL Server als Datenbank und C # 2005 als Programmiersprache. Die Website ist fast abgeschlossen und alle Links funktionieren gut. Aber ich mag normale Benutzer verhindern, dass ein paar Seiten zu öffnen. Wenn jeder Benutzer auf diese speziellen Links klickt, öffnet sich eine andere Seite, die eine ASP-Login-Steuerelement enthält. Der Benutzer hat einen gültigen Benutzer-ID und ein Kennwort angeben, die Links anzuzeigen Hinweis auf die restriktiven Seiten. Aber ein Neuling zu sein, weiß ich nicht, wie die volle Leistung des ASP-Login-Steuerelement zu nutzen. Denn wenn ein Benutzer die genaue URL der eingeschränkten Seiten kennen lernt, dann kann er / sie die Anmeldekontrolle umgehen und direkt die Seiten zugreifen, indem Sie die URL in die Adressleiste eingeben. Ich möchte dies verhindern. Wenn der Benutzer tippt direkt die URL in der Adressleiste, mag ich, dass die Seite selbst soll prüfen, ob der Benutzer über das Login-Steuerelement validiert wurde und entweder die Seite anzeigen oder weist die Benutzer auf die Login-Seite.

Wie implementiere ich diese Funktion ??

Danke.

Lalit Kumar Barik

War es hilfreich?

Lösung

Sie sollten die Benutzer im Zustand bei jedem Page_Load() Ereignisse auf den Seiten protokolliert überprüfen, die Berechtigungen steuern muß, oder einfach den Authentifizierungscode in einer CS-Datei setzen, die in allen anderen Dateien aufgenommen werden.

Je nach Authentifizierungsarchitektur, die Sie (einfach die Session-Variablen verwenden oder eine Session-ID mit Cookies erstellen) wählen, müssen Sie Ihren Code entsprechend anpassen.

Der einfachste Weg wäre, um Log-in durch das Sitzungsobjekt zu verwalten. Meldet sich der Benutzer in ordnungsgemäß mit den richtigen Anmeldeinformationen können Sie Session["logged_in"] = true eingestellt. Und auf jedem Page_Load() Ereignisse der Seiten, die Sie schützen wollen, müssen Sie die folgende Kontrolle tun.

Fügen Sie diesen Code am Anfang Ihres 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.");
  }

Beachten Sie bitte, dass dies für eine einfache Intranet-Anwendungen in Ordnung ist, aber wenn man in sicherer Login-Architekturen erhalten möchten, lesen Sie mehr über das Thema auf, als sich ausschließlich auf Session-Variablen reloying ist nicht sicher, weil Sitzungen entführt werden können .

Andere Tipps

Sie werden einen Blick auf die Lage secton nehmen wollen der Web-Config.

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.

Sie würden also hinzufügen, so etwas wie:

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

Die "Benutzer verweigern ="? "" Bit sagt "Deny alle anonymen Benutzer".

Sie können auch nur bestimmte Rollen erlauben einrichten, wenn Sie diejenigen verwenden.

Weitere Informationen über den Berechtigungs Abschnitt finden Sie hier:

  

Berechtigungs Element

Das ist Nahrung für die ASP.Net Mitgliedschaft Dienstleistungen. Schauen Sie sich auf diesem Artikel und auch die große Serie an 4GuysFromRolla über.

Die Mitgliedschaft ermöglicht es Ihnen, Benutzer / Passwort-Informationen zu speichern, die verwendet wird, unter anderem durch das Login-Steuerelement. Gekoppelt mit der Berechtigungskonfiguration können Sie direkt engen Zugang zu bestimmten Seiten nach unten auf bestimmte Benutzer oder Rollen.

Sie müssen einen Weg Login-Sitzungen für jeden Benutzer zu verwalten. Im Folgenden sind einige Tutorials, die Ihnen helfen könnten:

http://www.codeproject.com/KB/session/NoCookieSessionLogin.aspx

http://www.dotnetspider.com /resources/5597-Handling-Session-for-Login-Logout.aspx

Ich würde eine Rolle Tabelle für Benutzer machen. Jeder, der sich anmeldet bekommt den ‚normalen‘ Rolle. Spezielle Anwendungen, den Sie durch ihre Anmeldeinformationen bezeichnen Rollen zugewiesen bekommen eine Seite oder Abschnitt Ihrer Website zuzugreifen. Bestimmte Benutzer (wie Sie selbst) würde eine Administratorrolle bekommen, die sie automatisch Zugriff auf alles erlaubt.

eine Funktion namens CheckIsInRoles Feuer aus ( 'Admin', 'Normal', 'WhateverRoleYouChoose'), die einen Booleschen Wert zurück. Wenn das stimmt, laden Sie die Seite; wenn nicht, nicht.

Noch besser ist keinen Link angezeigt, wenn nicht in der richtigen Rolle.

Dies hat den zusätzlichen Vorteil, dass jeder einmal anmelden und dann die Seiten alles, was sie brauchen, um den Zugriff, ohne jedes Mal einloggen zu müssen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top