![]() |
Mit IdHTTPServer eigene Login-Seite realisieren?
Wie kann man es hinbekommen, dass man die Authentifizierung am IdHTTPServer statt mit dem Standard-Dialog über eine Webseite macht?
|
Re: Mit IdHTTPServer eigene Login-Seite realisieren?
Delphi-Quellcode:
So funktioniert das bei mir
procedure TForm1.IdHTTPServer1CommandGet(AThread: TIdPeerThread;
ARequestInfo: TIdHTTPRequestInfo; AResponseInfo: TIdHTTPResponseInfo); var sr:TSearchRec; begin if (Pos('/login', LowerCase(aRequestInfo.Document)) = 1) then begin aresponseinfo.ContentType:='text/html'; if arequestinfo.Params.Values['ParamName']='' then begin aresponseinfo.ContentText:='<head><meta http-equiv="pragma" content="no-cache">' +'</head><html><body> <form method="POST"> Name: <input type="text" Name="ParamName"</p> ' +' <input type="Submit" value="&Login"></p> </form></body></html>'; end else if arequestinfo.Params.Values['ParamName']='Passwort' then begin aresponseinfo.ContentType:='text/html'; AResponseinfo.ContentText:= '<html><head><META http-equiv="Content-Type" content="text/html; charset=UTF-8">' +'<title> Dateiliste </title></head><body><H1> Dateiliste </H1>' +'<hr color= "blue" /> <pre>' ; //<pre>[url="/"][To Parent Directory][/url] if FindFirst(extractfilepath(paramstr(0))+'\*.*',$7f, sr) = 0 then begin repeat if sr.Size> 0 then AResponseinfo.ContentText:=AResponseinfo.ContentText+format('%-20.20s%7s', [datetimetostr(FileDateToDateTime(sr.Time)),inttostr(sr.Size)]) +'[url="/download/'+sr.name+'"]'+sr.name+'[/url] ' ; until FindNext(sr) <> 0; FindClose(sr); AResponseinfo.ContentText:=AResponseinfo.ContentText+'</pre><hr color= "blue" /></body></html>'; end; exit; end else aResponseInfo.ResponseNo := 403; exit; end; "http://irgentwas/login" führt auf die Seite mit einem Editorfeld. dort gibt man das Passwort ein. bei erfolg sieht mas das Inhaltsverzeichniss. zacki05 [edit=SirThornberry]Delphi-Tags gesetzt - nächstes mal bitte selbst machen - Mfg, SirThornberry[/edit] |
Re: Mit IdHTTPServer eigene Login-Seite realisieren?
Das ist natürlich keine echte Authentifizierung... Ich dachte da eher daran anhand von per form (get oder post) übertragenem Usernamen und Passwort die Authentication selbst zu erzeugen:
Delphi-Quellcode:
Ich bekomme dabei allerdings immer eine Schutzverletzung :gruebel: :roll:
...
ARequestInfo.Authentication.Create; //Authentication erzeugen (=> Schutzverletzung) ARequestInfo.Authentication.Username := sUN; //Feldwerte zuweisen (=> ohne create, auch Schutzverletzung) ARequestInfo.Authentication.Password := sPW; ... // Wenn User authentifiziert ist... if ARequestInfo.AuthExists then begin ... |
Re: Mit IdHTTPServer eigene Login-Seite realisieren?
@Frifra: RequestInfo ist eben vom Request und nicht für die Response. Entsprechend solltest du aus RequestInfo auch nur lesen! Zudem befindet sich unter ARequestInfo.Authentication.Username eben der Benutzername welcher über den Standarddialog eingegeben wurde (also der welcher bei einem Apache-Server per .htaccess mit Basic Authentication eingeleitet wird).
Zitat:
Wie sollte das ganze denn ablaufen (aus Sicht Anwender vor Browser)? Es ist doch so das der Anwender(Client) eine Seite aufruft und diese vom Server zurückgegeben wird. Dort trägt der Nutzer(Client) dann seine Daten clientseitig in eine Art Formular ein und schickt diese wieder an den Server. Der Server kann dann auswerten was der Client per post/get übermittelt hat und kann entsprechend das eine oder andere als Antwort schicken. [Edit]Das was hier ( ![]() Zur besseren Übersicht würde man den eigentlichen Webseiten-Quelltext in den meisten Fällen zwar in einer externen Datei oder Ressource lagern und von da laden, aber das Prinzip ist exakt das gleiche. |
Re: Mit IdHTTPServer eigene Login-Seite realisieren?
Zitat:
Zitat:
|
Re: Mit IdHTTPServer eigene Login-Seite realisieren?
Zitat:
|
Re: Mit IdHTTPServer eigene Login-Seite realisieren?
Zitat:
|
Re: Mit IdHTTPServer eigene Login-Seite realisieren?
richtig, die Session-ID wird in allen mir bekannten Fällen (wenn Cockies deaktiviert sind) per Get übergragen (also im Browser an die URL angehangen). Wenn du in deinem Browser die Cockies mal deaktivierst und hier in der DP unterwegs bist solltest du dann entsprechend in der Adressleiste das ganze erspähen können.
|
Re: Mit IdHTTPServer eigene Login-Seite realisieren?
Dann ist es leider für mich nicht brauchbar... bei Basic-authentication benötige ich weder Cookies, noch irgendwelche Parameter.... Also müsste ich doch irgendwie eine Basic-Authentication quasi in den Request "injizieren" um alle folgenden Seiten mit dieser Anmeldung zu bekommen.
|
Re: Mit IdHTTPServer eigene Login-Seite realisieren?
Zitat:
Bei Basic Authentifizierung sind allerdings auch Parameter im Spiel, nicht in der URL, aber im HTTP Header. - Muss ja, wo sonst ;) Und einen Authentifizierungs-Request-Header des Clients durch den Server setzen lassen zu können, ist im HTTP Protokoll, soviel ich weiss, nicht vorgesehen. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:03 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz