» Start & Installation » ASP-Grundlagen » VBScript » Datenbanken » Erweiterte Techniken » Fehlercode-Suche » FAQ » Forum für aspfehlercodes » ASP » JavaScript » ASCII & ANSI » HTTP-Statuscodes » Codepage » LCID » VBScript » JScript
|
Link: Wichtiger Hinweis in eigener Sache!
| Autor: Klaus Keller | Erstellt am: 2005-02-09 | Geändert am: 2005-05-20 | Aufrufe: 15060 |
Tipp 71: Login-Bereich mit Benutzerverwaltung
Inhalt dieser Seite:
Einführung Ein Login wurde Ihnen bereits in Tipp 17 vorgestellt. Der wesentliche Unterschied zu diesem Bereich ist der Umfang und Komplexität. Dieser Login-Bereich ist nicht darauf ausgerichtet, daß Sie diesen so einfach wie möglich anpassen können. Dieser hier vorgestellte Login-Bereich ist wesentlich umfangreicher. Nicht nur daß eine Login-Seite für Besucher zur Verfügung steht, es steht auch ein Administrativer Bereich bereit. Die Passwörter werden verschlüsselt in die Datenbank eingetragen. Eine umfangreiche Benutzerverwaltung im Administrativen Bereich steht zur Verfügung. Dazu steht eine Funktion zur Verfügung, mit der Sie eine Seite speziell nur für einen oder mehrere Besucher aufrufbar machen können. Auch die Navigation kann so für einen oder mehrere Besucher individuell erstellt werden.
Der öffentliche Bereich Der öffentliche Bereich ist kurz und knapp erklärt: Denn im Grunde genommen gibt es keinen öffentlichen Bereich. Der Administrative Bereich wird mit dem Öffentlichen Bereich "vermischt". Das wird dadurch erreicht, daß zum einen die Navigation auf jeden Benutzer individuell einstellbar ist. Zum anderen ist es möglich, daß ein Zugriffsrecht je Bereich individuell je nach Benutzer einstellbar ist.
Der Administrative Bereich Der Administrative Bereich ist deutlich umfangreicher. Natürlich muss sich auch der Administrator wie jeder andere Benutzer einloggen. Als Administrator loggen Sie sich mit "admin" als Benutzernamen wie auch "admin" als Passwort ein. Wichtig: Ändern Sie den Namen des Administratorkontos wie auch das Passwort! Aber Vorsicht: Das Administrator-Konto muß in der Datenbank unbedingt die BenutzerID 1 haben. Um die Benutzerkonten zu administrieren klicken Sie dann im rechten Bereich auf "Usermanager", sie finden dann eine Übersicht aller Benutzerkonten.
Ob öffentlicher oder Administrativer Bereich: Es steht immer ein Link für einen Logout zur Verfügung. Diesen Link sollte unbedingt verwendet werden, um so Sicherheitsrisiken zu minimieren. Weisen Sie die Benutzer unbedingt darauf hin!
Die Installation Um Sie bestmöglich mit dem Login vertraut zu machen, werde ich Ihnen das ganze in der Praxis erklären. Dazu laden Sie sich das ganze herunter, Download-Link dazu am Seitenende bei "Herunterladen".
Entpacken Sie dann das ganze z.B. in das Verzeichnis "C:\Inetpub\wwwroot\asphelper.de\tip71\". Sie finden dann 3 Unterordner, ~db, ~include und images. Übrigens ist damit die Installation fast fertig! Wenn Sie einen anderen Datenbankpfad oder einen anderen Namen für Ihre Datenbank einsetzen möchten, dann müssen Sie dazu die Pfad.asp im Verzeichnis ~include öffnen und ändern. In der Funktion GetStrConn wird der Datenbank-Treiber zusammengestellt.
Die Benutzeradministration Ich möchte Ihnen jetzt aufzeigen, wie Sie ein neues Benutzerkonto einrichten, rufen Sie dazu in Ihrem Browser den Login auf, z.B.: http://localhost/asphelper.de/tip71/ Ihnen wird ein Loginfenster angezeigt. Als Name und Passwort geben Sie jeweils "admin" ein, beachten Sie dabei immer die Groß- und Kleinschreibung. Klicken Sie dann auf den Button "Login". Auf der rechten Seite gibt es einen Link "Login-Manager", rufen Sie diesen auf. Sie sehen alle Benutzer in einer Übersicht, hier sollte aktuell nur das Benutzerkonto "admin" vorhanden sein. Klicken Sie oben auf "Neu". Als Namen geben Sie "benutzer" an, als Passwort ebenfalls "benutzer". Damit man nicht per Zufall ein falsches Passwort angibt, geben Sie das Passwort erneut bei "Passwort wiederholen" an. Zuletzt klicken Sie auf "Erstellen".
Sie befinden sich nun in der Detailansicht des Benutzerkontos. Bei Beschreibung können Sie das Benutzerkonto beschreiben, es ist für eventuelle öffentliche Bereiche gedacht. "Interne Bemerkungen" ist nur für den Login-Bereich gedacht, z.B. dann wenn die Seiten im Internet sind und der Benutzer aus welchen Gründen auch immer abgemahnt wurde.
Wenn Sie "Status" auf Inaktiv setzen, kann sich der Benutzer nicht mehr einloggen. Sie können sowohl ein anderes Passwort wie auch einen anderen Namen für das Benutzerkonto angeben. Möchten Sie ein Benutzerkonto löschen, einfach auf "Benutzerkonto löschen" klicken, es wird Ihnen dann ein Formular angezeigt, erst wenn Sie dann im neuen Fenster auf den darin angezeigten Button klicken wird das Benutzerkonto gelöscht.
Das Benutzerkonto ist soweit eingerichtet. Nun öffnen Sie ein neues Browserfenster und loggen Sie sich als "benutzer" mit dem Passwort "benutzer" ein. Lasen Sie dabei das Fenster offen, in dem Sie sich im Login-Bereich als "admin" angemeldet haben. Wenn Sie sich erfolgreich eingeloggt haben, werden Sie in der Übersichtsseite feststellen, daß der Loginmanager nicht vorhanden ist. Wie man Seiten und Bereich nur für bestimmte Benutzer sichtbar und aufrufbar macht, das wird Ihnen im nächsten Kapitel erklärt.
Datei sichern Nun möchte ich Ihnen erklären, wie Sie eine Seite so einrichten, daß diese nur von dem Benutzerkonto "benutzer" aufgerufen werden kann. Erstellen Sie dazu eine Datei im Hauptverzeichnis des Loginbereichs (z.B. "C:\Inetpub\wwwroot\asphelper.de\tip71\") namens "Test.asp". Geben Sie dort den folgenden Quellcode ein:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| <% @ Language="VBScript" LCID = 1031 %><% Option Explicit Response.Buffer = true Session.LCID = 1031 Response.Expires=0 Response.AddHeader "Pragma","no-cache" Response.AddHeader "cache-control", "private" Response.Expiresabsolute = Now() - 1000 Response.CacheControl = "no-cache"
%><!-- #include file="~include\inc_LoginCheck.asp" --><% %><!-- #include file="~include\html_utils.asp" --><%
Public arrUserIDs arrUserIDs = Array("2") if not Login_UserCheck(arrUserIDs) then Response.Write("Sie haben keine Zugriffs-Berechtigung für diese Seite") Response.End end if
'HTML-Start ausgeben Call HTML_Header()
Response.Write("Das ist eine Testseite, Zugriff erlaubt!")
'HTML-Ende ausgeben Call HTML_Footer() %> |
Wie also funktioniert der Login? Diese Seite setzt gleich 2 Prüfungen ein. Zunächst einmal wird geprüft, ob der Benutzer überhaupt eingeloggt ist. Das wird dadurch geprüft, daß die Datei inc_LoginCheck.asp inkludiert wird. Um eine Datei zu schützen, also sicherzustellen daß der Besucher eingeloggt ist, ist nur das Inkludieren der Datei erforderlich, mehr nicht. Sie müssen keine Funktion aufrufen, das wird durch die inc_LoginCheck.asp durchgeführt.
Das bedeutet, möchten Sie eine Seite für alle Benutzerkonten einrichten, dann müssen Sie lediglich die inc_LoginCheck.asp wie in Zeile 13 inkludieren, und schon ist die Seite gesichert. Wie man eine Seite für alle Benutzerkonten bereitstellt sehen Sie in der Default.asp.
Nun aber die zweite Prüfung. Diese stellt sicher, daß nur bestimmte Besucher diese Seite aufrufen können. Das geschieht in den Zeilen 16 bis 21. Zuerst wird eine Variable deklariert. In Zeile 17 wird aus dieser Variable per Array-Funktion ein Array. In den Klammern werden jene Benutzer-IDs angegeben, die Zugriff auf diese Seite erhalten sollten. Hier wurde die ID 2 angegeben, also jene für das neue Benutzerkonto "benutzer". Möchten Sie hier mehr IDs angeben, dann geht das so:
| arrUserIDs = Array("1","2","18") |
Als nächstes wird eine Funktion aufgerufen, dieser Prozedur wird als Parameter das soeben erstellte Array übergeben. Diese Funktion gibt entweder true oder false zurück. false bedeutet, daß der aktuelle Benutzer keinen Zugriff auf diese Seite hat, natürlich bedeutet true somit daß der Benutzer Zugriff auf die Seite hat.
Die Datei für das Benutzerkonto "benutzer" ist somit fertig. Aber wie die Datei aufrufen? Ein Link fehlt dazu! Dazu rufen Sie die Datei "html_utils.asp" im Verzeichnis "~include" auf, darin ist auch die Linke Navigation enthalten.
1 2 3 4 5 6 7 8 9 10 11 12 13
| <% if Session("UserID") = "1" then 'Loginmanager anzeigen %><span width="150pt" style="width:150;"> <a href="UserManager.asp">Login-Manager</a> </span><br /><%
'AdminConfig anzeigen %><span width="150pt" style="width:150;"> <a href="AdminConfig.asp">AdminConfig</a> </span><br /><% end if %> |
Hier sehen Sie auch einen Grund, warum der Administrator immer die ID 1 haben sollte, denn nur diesem Konto wird der Link für den Login-Manager angezeigt. Natürlich wäre es nun möglich, für den "benutzer" den etwa gleichen Quellcode für die Test.asp zu erstellen. Aber was ist, wenn man mehreren Benutzern den Link anzeigen möchte? Dazu verwenden Sie einfach wieder den zuvor beschriebenen Funktionsaufruf mit dem Array, z.B. so:
<% dim arrUserIDs arrUserIDs = Array("2") if Login_UserCheck(arrUserIDs) then %><span width="150pt" style="width:150;"> <a href="Test.asp">Testseite</a> </span><br /><% end if %> |
Natürlich ist es auch möglich, das ganze ohne eine Variable zu erstellen, und dennoch ein Array an die Funktion zu übergeben:
<% if Login_UserCheck(Array("2")) then %><span width="150pt" style="width:150;"> <a href="Test.asp">Testseite</a> </span><br /><% end if %> |
Wenn Sie jetzt wieder in Ihrem Browserfenster für das Benutzerkonto "benutzer" die Seite erneut laden, sollte ein neuer Link "Testseite" vorhanden sein, während in Ihrem Browserfenster in dem Sie als "admin" angemeldet sind, dieser Link nicht vorhanden sein sollte.
Design anpassen Natürlich soll ein Loginbereich zumeist in einen vorhandenen oder noch zu erstellenden Bereich eingebaut werden. Um Ihnen Anpassungen im Design zu erleichtern, wurde der Beginn und das Ende des HTML-Codes einer jeden Seite in die Seite html_utils.asp ausgelagert. Dazu wurde eine Funktion HTML_Header und eine Funktion HTML_Footer erstellt.
Wie aber das Design anpassen? Selbstverständlich können Sie das Design gemäß Ihren eigenen Wünschen anpassen, denn es wurden mehrere Farbvariationen verstellt. Wenn Sie die Datei html_utils.asp im Verzeichnis ~include aufrufen, sehen Sie dort die Funktion HTML_Header, in dieser sehen Sie auch eine HMTL-Anweisung für eine Stylesheet-Datei. Sie finden im Hauptverzeichnis des Logins gleich mehrere css-Dateien. Aktuell ist in HTML_Header die Style7.css eingebunden, wenn Sie das z.B. auf Style5.css ändern, wurde die Farbgebung geändert.
[Update] Im Skript gab es leider noch einen Fehler, der beseitigt wurden. Im Download finden Sie die aktuellste Version. Geändert wurde folgende Datei und Funktion: inc_UserManager_New.asp (User_New_WriteIntoDB)
Herunterladen: tip71.zip
|
|