Avatar billede clevzter Nybegynder
18. april 2003 - 14:32 Der er 6 kommentarer og
1 løsning

Prompt-login-dialogbox-ting

Jeg kunne godt tænke mig et loginsystem i ASP, der brugte samme loginmetode som fx http://www.skolekom.dk/login

Altså hvor der ikke er normale form-elementer men kun en dialogbox til udfyldelse.

Hvad har i?
Avatar billede mortrr Praktikant
18. april 2003 - 14:36 #1
Den benytter de normale authentication metoder på en web-server.

Det kan sættes i properties for website/subweb - security.

Eller kan simuleres i asp med fx:
<%@  Language=JavaScript %><%
Response.Buffer=true;
AuthType=""+Request.ServerVariables("AUTH_TYPE");
aTypes="_BasicNTLM";
if (aTypes.indexOf(AuthType)<1) {
    Response.Status = "401 Unauthorized";
    Response.AddHeader('WWW.Authenticate','Basic');
    Response.End();
}
%>
<HTML>
<HEAD>
</HEAD>
<BODY>Hej <%=Request.ServerVariables("AUTH_USER")%><p><%=AuthType%></BODY>
</HTML>
Avatar billede clevzter Nybegynder
18. april 2003 - 14:39 #2
okay. fedt.

hvor putter jeg så ind hvad kodeord osv skal være? og hvorfor spørger den om domæne?
Avatar billede mortrr Praktikant
18. april 2003 - 14:54 #3
Den spørger om domæne, da IE kan se at det er en IIS'server.

Du lægger der ind i den side der skal kontrollere om brugeren er logget ind.

Hvis du vil sammenligne brugernavn/password med en database, skal du bruge lidt mere kode, så du kan afkode password.

Test-script:
<%@  Language=vbscript %><%
Function Base64Decode(base64String) 
Const Base64CodeBase = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/" 
Dim dataLength, Out, groupBegin 
dataLength = Len(base64String) 
Out = "" 
If dataLength Mod 4 <> 0 Then
    Err.Raise 1, "Base64Decode", "Bad Base64 string."
    Exit Function
  End If
  ' Now decode each group:
  For groupBegin = 1 To dataLength Step 4
    Dim numDataBytes, CharCounter, thisChar, thisData, groupData
    ' Each data group encodes up To 3 actual bytes.
    numDataBytes = 3
    groupData = 0
    For CharCounter = 0 To 3
      ' <B>Convert</B> each character into 6 bits of data, And add it To
      ' an integer For temporary storage.  If a character is a '=', there
      ' is one fewer data byte.  (There can only be a maximum of 2 '=' In
      ' the whole string.)
      thisChar = Mid(base64String, groupBegin + CharCounter, 1)
      If thisChar = "=" Then
        numDataBytes = numDataBytes - 1
        thisData = 0
      Else
        thisData = InStr(Base64CodeBase, thisChar) - 1
      End If
      If thisData=-1 Then
        Err.Raise 2, "Base64Decode", "Bad character In Base64 string."
        Exit Function
      End If
      groupData = 64 * groupData + thisData
    Next
    ' Convert 3-byte integer into up To 3 characters
    Dim OneChar
    For CharCounter = 1 To numDataBytes
      Select Case CharCounter
        Case 1: OneChar = groupData \ 65536
        Case 2: OneChar = (groupData And 65535) \ 256
        Case 3: OneChar = (groupData And 255)
      End Select
      Out = Out & Chr(OneChar)
    Next
  Next
  Base64Decode = Out
End Function

if Request.ServerVariables("HTTP_AUTHORIZATION") = "" then
  Response.Status = "401 Unauthorized"
  Response.Addheader "WWW-Authenticate", "BASIC Realm = Hov hov"
  Response.End
else
  Auth=Request.ServerVariables("HTTP_AUTHORIZATION")
  if left(Auth,6)="Basic " then
    userPass=split(Base64Decode(mid(Auth,7)),":")
    Response.Write "<br>Brugernavn:" & userPass(0)
    Response.Write "<br>Password:" & userPass(1)
  end if
end if
%>

userPass(0) og userPass(1) kunne du, efter kontrol i database eller lign, gemme i en session variabel.
Et script som kontrollerer om brugeren er logget ind, og ellers forsøger at logge ind, kunne være:

<%@  Language=vbscript %><%
Function Base64Decode(base64String) 
Const Base64CodeBase = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/" 
Dim dataLength, Out, groupBegin 
dataLength = Len(base64String) 
Out = "" 
If dataLength Mod 4 <> 0 Then
    Err.Raise 1, "Base64Decode", "Bad Base64 string."
    Exit Function
  End If
  ' Now decode each group:
  For groupBegin = 1 To dataLength Step 4
    Dim numDataBytes, CharCounter, thisChar, thisData, groupData
    ' Each data group encodes up To 3 actual bytes.
    numDataBytes = 3
    groupData = 0
    For CharCounter = 0 To 3
      ' <B>Convert</B> each character into 6 bits of data, And add it To
      ' an integer For temporary storage.  If a character is a '=', there
      ' is one fewer data byte.  (There can only be a maximum of 2 '=' In
      ' the whole string.)
      thisChar = Mid(base64String, groupBegin + CharCounter, 1)
      If thisChar = "=" Then
        numDataBytes = numDataBytes - 1
        thisData = 0
      Else
        thisData = InStr(Base64CodeBase, thisChar) - 1
      End If
      If thisData=-1 Then
        Err.Raise 2, "Base64Decode", "Bad character In Base64 string."
        Exit Function
      End If
      groupData = 64 * groupData + thisData
    Next
    ' Convert 3-byte integer into up To 3 characters
    Dim OneChar
    For CharCounter = 1 To numDataBytes
      Select Case CharCounter
        Case 1: OneChar = groupData \ 65536
        Case 2: OneChar = (groupData And 65535) \ 256
        Case 3: OneChar = (groupData And 255)
      End Select
      Out = Out & Chr(OneChar)
    Next
  Next
  Base64Decode = Out
End Function

if Session("Bruger")="" then
  if Request.ServerVariables("HTTP_AUTHORIZATION") = "" then
    Response.Status = "401 Unauthorized"
    Response.Addheader "WWW-Authenticate", "BASIC Realm = Min side"
    Response.End
  else
    Auth=Request.ServerVariables("HTTP_AUTHORIZATION")
    if left(Auth,6)="Basic " then
      userPass=split(Base64Decode(mid(Auth,7)),":")
      if userPass(0)="admin" and userPass(1)="adminpass" then
        Session("Bruger")="admin"
      else
        Response.Status = "401 Unauthorized"
        Response.Addheader "WWW-Authenticate", "BASIC Realm = Hov hov"
        Response.End
      end if
    end if
  end if
end if
Response.Write "Velkommen " & Session("Bruger")
' Kommer vi hertil, er vi logget ind.
%>

      if userPass(0)="admin" and userPass(1)="adminpass" then
skal selvfølgelig skiftes med et eller ander der kontrollerer i databasen.

Alle andre sider kan så nøjes med at kigge på Session("Bruger"), og hvis den er tom, kaste brugeren over til ovenstående script.

(håber ikke jeg har lavet for mange fejl ;-)
Avatar billede clevzter Nybegynder
18. april 2003 - 15:01 #4
øhh...
der er 2 forskellie scripts ik sandt? jeg ved ikke så meget om det, så jeg er lidt usikker på hvad jeg skal sætte ind hvor.
der skal bare være 1 brugernavn og 1 adgangskode. ikke noget database-halløj.
Avatar billede mortrr Praktikant
18. april 2003 - 15:04 #5
OK.

Jo - det er 2 forskellige scripts.

Du skal bare tage det nederste og sætte ind øverst i "forsiden" til det der skal være beskyttet.
Avatar billede clevzter Nybegynder
18. april 2003 - 15:09 #6
okay. Men hvad skal det øverste så bruges til?
Jeg er lidt forvirret...
Avatar billede mortrr Praktikant
18. april 2003 - 16:10 #7
Det var bare for at lave en test af om man fik fat i brugernavn og password.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester