Jeg har en asp side tilknyttet en simpel access-database. Den indeholder
personlige oplysninger om de ansatte på et institut ved universitetet, altså
folk som sidder på det samme NT-netværk. Hver ansat kan klikke sig ind på
deres eget navn og rette deres egne oplysninger. Denne funktion er beskyttet
på to måder. Dels ligger den pågældende asp side i en mappe på serveren, som
kræver logon. Dette udelukker effektivt udenforstående i at få adgang. Dels
sammenholder jeg hver persons brugernavn med databasen, således at de kun
kan få lov at redigere i deres egne oplysninger. Det har jeg gjort som
følger:
StrLogon= Request.ServerVariables("LOGON_USER")
If StrLogon = rs("logon") Then
' her kommer så sidens indhold, som er en formular, det behøver jeg ikke gå
ind i
Else Response.write "<h1>Adgang nægtet!</h1>
End If
Dette system virker for så vidt fint. Når man sidder på det lokale netværk,
kan man bare klikke OK i den dialogboks som kommer op, når man søger at få
adgang til den pågældende mappe, så hentes LOGON_USER automatisk fra
windows.
Problemet er domænenavnet. LOGON_USER har formatet "domænenavn\brugernavn".
I NT er både brugernavn og domænenavn case-insensitive. Det viser sig nu, at
på nogle maskiner er domænenavnet angivet med store, i andre med små
bogstaver. Sætningen If StrLogon = rs("logon") Then er derimod
case-sensitiv. Og det betyder, at cirka halvdelen af brugerne bliver afvist,
hvis de ikke taster domænenavnent ind i hånden.
Mit spørgsmål er altså: Er der en måde, at gøre betingelsessætningen
case-insensitiv? Eller at præformattere, om
"Request.ServerVariables("LOGON_USER")" til at være enten med store eller
små bogstaver?
MVH
Peter
--
cand.mag. Peter Westh
EDB-centret, lok. 5.2.22
pwesth@hum.ku.dk
|