ASPLogin
Introduktion
ASPLogin tillhandahåller användarautentisering och kontroll för
Active Server Page (ASP) baserade webbsajter och applikationer.
ASPLogin använder en ActiveX serverkomponent för att automatiskt
skicka användare till en loginsida. Därefter kontrolleras användarens rättigheter i
databasen. Du kan använda den färdiga användardatabasen som följer med ASPLogin eller
använda en annan ODBC datakälla. ASPLogin har en webb-baserad administrationssida som
kan användas för att lägga till nya användare eller grupper till din ASPLogin databas.
Både ASPLogin och administrations-webbsidan är tillräckligt flexibla för att anpassas
till egna databaser du redan använder eller planerar att implementera.
Förberedelser inför ditt
webb projekt
Se till att alla HTML dokument du vill skydda med ASPLogin har
filändelsen .asp, inte .htm eller .html. Om du använder frontPage kan du ändra namnen
på dina filer utan att du bryter några länkar.
Det finns kopior av asplogin.asp och aspldeny.asp på din webbservers
root. Saknas dessa filer kan du kopiera dit dem själv!
Här kan du hämta filerna om de saknas:
asplogin.zip
Du kan redigera asplogin.asp och aspldeny.asp för att passa din webbsajt. Se dock till
att inte ändra i ASP-koden före <HTML> eller mellan <!--ASPLogin form
begins--> och <!--ASPLogin form ends-->.
ASPLogin visar meddelandet "invalid login" på loginsidan om
användaren matar in ett användarnamn/lösenord som inte finns i databasen. Du kan
anpassa meddelandet "invalid login" genom att sätta variabeln
Session("asplLoginError") i global.asa. Detta är speciellt användbart för
sajter som ej är engelskspråkiga.
Man kan också ha anpassade meddelanden för användare vars konton
är avstängda eller för gamla . För att använda dessa funktioner skapar du ett par ASP
sidor och lägger dem i server rooten. Du måste sedan sätta ett par sessions variabler
med sökvägarna till dessa filer. (se global.asa, längre ned). Om du inte anger dessa
filer, kommer ASPLogin att använda aspldeny.asp.
Att skydda dina dokument
Varje Asp fil som kommer skall skyddas med ASPLogin måste ha ett par
rader ASP-kod i början på filen. ASP-raderna måste ligga före all annan HTML eller
ASP-kod.
Microsoft ASP använder VBScript om man inte anger något annat. I vilket fall så kommer
här ett exempel i JScript. Allra högst upp i din Asp fil skall alltså följande rader
finnas:
<%@ LANGUAGE=VBScript %>
<%
Set asplObj=Server.CreateObject("ASPL.Login")
asplObj.Protect
Set asplObj=Nothing
%> |
Motsvarande i JScript:
<%@LANGUAGE=JScript%>
<%
asplObj=Server.CreateObject("ASPL.Login");
asplObj.Protect();
asplObj="";
%> |
Genom att placera ovanstående rader i dina ASP-filer kommer
användarna automatiskt att skickas till login sidan (asplogin.asp) första gången de
försöker komma åt någon av ASP-filerna. Efter att ha loggat in kommer der att kunna
nå alla skyddade sidor utan att behöva logga in igen under deras session. Om de kommer
tillbaka vid en annan tidpunkt kommer de att få skriva in namn och lösenord igen oavsett
vilken sida de försöker komma åt.
För att manuellt logga ut användare från din webbsajt måste de
anropa en webbsida innehållande följande ASP script:
Användar, grupp och utgångsdatum kan sättas i varje dokument med
följande direktiv, placerade mellan Server.CreateObject och Protect raderna:
asplObj.Group("GroupName")
asplObj.User("UserName")
asplObj.LastDate("1/1/2001") |
Till exempel, för att göra dokument tillgängliga för alla
användare i en grupp kallad "Redaktion", medlemmar i en grupp kallad
"Tekniker" och användaren "Pelle" (som kan vara men inte behöver
vara medlem i någon av grupperna) skulle du behöva lägga till följande rader högst
upp i ditt dokument:
<%@ LANGUAGE=VBScript %>
<%
Set asplObj=Server.CreateObject("ASPL.Login")
asplObj.Group("Redaktion")
asplObj.Group("Tekniker")
asplObj.User("Pelle")
asplObj.Protect
Set asplObj=Nothing
%> |
Fler funktioner i
ASPL.Login objektet
Ett ASPL.Login objekt kan också anropa följande funktion:
Funktionen suddar alla användar, grupp och lastDate direktiv som
redan satts på den aktuella sidan. This is useful only when you are running conditional
permission code. De flesta ASPLogin installationer kommer aldrig att använda
asplObj.ResetPermission.
Slutligen, ASPL.Login objektet har en DebugInfo funktion som
returnerar debug information och versionsnummer.
Förbered användardatabasen
och inloggningsformulären i global.asa
ASPLogin är konfigurerad med en färdig MS Access databas.
Vill använda en annan databasfil måste du tala om för ASPLogin var
den kan hitta den. Likaså om du tänker använda MS SQL Server.
ASP sessions variabler talar om för ASPLogin var den kan hitta
databasen.
Det bästa stället att placera den här informationen är i
filen 'global.asa' på rootnivån av din webbsajt. Ett exempel på en global.asa fil
visas här nedan.
<SCRIPT LANGUAGE=VBScript RUNAT=Server>
Sub Session_OnStart
Session("asplConnStr")=
"DBQ=f:\sites\customers\xyz1000\db\asplogin.mdb;
Driver={Microsoft Access Driver (*.mdb)};"
End Sub
</SCRIPT>
|
Ovanstående exempel filen sätter variabeln
Session("asplConnStr") att peka på en Access databas installerad i
f:\sites\customers\xyz1000\db\asplogin.mdb
Andra ASPLogin sessions variabler finns tillgängliga för att sätta
de kolumn och tabellnamn ASPLogin använder för att authentisera användare och
kontrollera grupptillhörigheter. Du behöver bara sätta dessa variabler om du inte vill
använda den förinstallerade databasen och du behöver bara sätta dem en gång per
session som angivits ovan. Det finns också sessionsvariabler för placeringen av html
filer dit användarna skall skickas om deras konto slutar att gälla, om ett fel uppstår
på sidan, o s v. Den fullständiga listan på sessionsvariabler finns i följande tabell:
Sessions Variabel
|
Användning
|
|
|
asplUserTbl
|
Namn på tabellen med användarinfo
|
asplGroupTbl
|
Namn på tabellen med gruppnamn
|
asplMemberTbl
|
Namn på tabellen som kopplar
användare till grupper.
|
asplUserTbluserid
|
Ett fält med unikt nummer för
varje användare
|
asplUserTblusername
|
Fält med användarnamn
|
asplUserTblpassword
|
Fält med lösenord
|
asplUserTblactive
|
booleskt värde (sant/falkskt)
som anger om användaren är aktiv
|
asplUserTblexpires
|
Det sista datumet användaren
kan logga in
|
asplGroupTblgroupid
|
Ett fält med unikt nummer
för varje grupp
|
asplGroupTblgroupname
|
Ett fält med gruppens namn
|
asplMemberTbluserid
|
Fält i medlemstabellen för
användarId.
|
asplMemberTblgroupid
|
Fält i medlemstabellen för
gruppId
|
Session("asplFormPath")
|
Sökväg till asplogin.asp
om den inte är
placerad i rootkatalogen
|
Session("asplDenyPath")
|
Sökväg till aspldeny.asp
om den inte är placerad
i rootkatalogen
|
Session("asplInactivePath")
|
Sökväg till sidan för
inaktiva användare
(default är aspldeny.asp)
|
Session("asplExpiredPath")
|
Sökväg till sidan för
användare vars sista
inloggningsdatum har
passerats
(default är aspldeny.asp)
|
Session("asplLogPath")
|
Sökväg till loggfilen.
|
Session("asplLoginError")
|
Felmeddelandet som
skall visas när ett
felaktigt lösenord
eller okänt användarnamn
har matats in i asplogin.asp
|
Session("asplErrorPath")
|
Sökväg till sidan för
databas fel under
inloggningen
(default är att
skriva ett felmeddelande
till webbläsaren)
|
Webb-baserad
administration
Den webb-baserade administrationssidan är normalt installerad som
/aspladmn.asp under din webbsajts root.
Administrationsverktyget är skyddat av ASPLogin precis som dina andra sidor på din webbsajt.
Access till administrationsverktyget är initialt begränsat
till default användaren 'Admin', med lösenordet för ditt första konto 'Admin' i
den förgenererade ASPLogin databasen. Observera att ASPLogin lösenord är
skiftlägeskänsliga
Den webb-baserade administrationssidan låter dig lägga till,
redigera och ta bort användare och grupper ur din ASPLogin databas.
Vem är inloggad?
ASPLogin sätter sessions variabeln Session("asplUserName")
och Session("asplUserID") med namnet på den inloggade användaren. Du kan
använda dessa variabler i dina egna script för att specialanpassa din webbsajt för
olika användare.
Sammanfattning av alla
ASPLogin inställningar,
formulär, variabler och funktioner
Using the ASPL.Login object in an ASP page
|
set asplObj=
Server.CreateObject("ASPL.Login")
|
Create an ASPLogin object
to protect this document
|
asplObj.User("<username>")
|
Restrict access to this
.asp document to the user
"<username>"
|
asplObj.Group("<groupname>")
|
Restrict access to this
.asp document to the group
"<groupname>"
|
asplObj.LastDate("<mm/dd/yyyy>")
|
Deny access to this page
after "<mm/dd/yyyy>"
|
asplObj.Protect
|
Protect this page
|
asplObj.ResetPermission
|
Reset any user, group and
date permission set
already
|
asplObj.DebugInfo
|
Print out settings and
debugging information
|
Other ASP useful in your documents
|
Session("asplUserName")
|
The username field for the
currently logged in user
|
Session("asplUserID")
|
The userid field for the
currently logged in user
|
Session.Abandon
|
Resets the ASP session and
logs out the current user
|
ASPLogin session variables to
(optionally) be set in global.asa
|
Session("asplConnStr")
|
The connection string
or DSN name for the
ASPLogin database
|
Session("asplUserTbl")
|
name of the table
with user info
|
Session("asplGroupTbl")
|
name of the table
with group names
|
Session("asplMemberTbl")
|
name of table that
maps users
to groups
|
Session("asplUserTbluserid")
|
autonumber or identity
field for users
|
Session("asplUserTblusername")
|
field with user name
|
Session("asplUserTblpassword")
|
field with password
|
Session("asplUserTblactive")
|
boolean (yes/no) for
whetherthe user is
active
|
Session("asplUserTblexpires")
|
last date that the
user can log in
|
Session("asplGroupTblgroupid")
|
autonumber or identity
field for groups
|
Session("asplGroupTblgroupname")
|
field with group name
|
Session("asplMemberTbluserid")
|
field in member table
for userid
|
Session("asplMemberTblgroupid")
|
field in member table
for groupid
|
Session("asplFormPath")
|
Path to asplogin.asp if not
in the web server root
|
Session("asplDenyPath")
|
Path to aspldeny.asp if not
in the web server root
|
Session("asplInactivePath")
|
Path to page for
inactive users (default is
aspldeny.asp)
|
Session("asplExpiredPath")
|
Path to page for expired
users (default is
aspldeny.asp)
|
Session("asplLogPath")
|
Windows path to user
log file
|
Session("asplLoginError")
|
Error message to display
when incorrect password
or unknownuser name is
entered in asplogin.asp
|
Session("asplErrorPath")
|
Path to page for
database errors
during login
(default prints
a text message to
the browser)
|
|