Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi idHTTPServer : Einloggen (https://www.delphipraxis.net/50354-idhttpserver-einloggen.html)

Assun 24. Jul 2005 12:55


idHTTPServer : Einloggen
 
Hi !

Mein Server funtkioniert soweit schon ganz gut ! Doch wie kann kann ich realisieren, dass sich Benutzer nur mit gültigem Passwort + Nutzername einloggen können ?

Ich habe diesen Code :

Delphi-Quellcode:
procedure TForm1.IdHTTPServer1CommandGet(AContext: TIdContext;
  ARequestInfo: TIdHTTPRequestInfo; AResponseInfo: TIdHTTPResponseInfo);
Var
  Stream: TFilestream;
  TheString : String;

  begin
if ARequestInfo.Document = '/' then
begin
  try
  if ARequestinfo.Username = 'Assun' then
  begin
  inc(i);
  Caption := ('Bereits' + IntToStr(i) + 'Aufrufe');
  AResponseInfo.ContentType  := 'text/html';
  Stream := TfileStream.Create('Admin/test.htm', fmOpenRead or fmShareDenyWrite );
  AResponseInfo.ContentStream := Stream;
  setlength(TheString, stream.size);
  stream.Read(TheString[1], stream.size);
  end
  except
  Exit;
  end;
  end
else
if ARequestInfo.Document = '/test.jpg' then
begin
  try
  AResponseInfo.ContentType  := 'image/jpeg';
  Stream := TfileStream.Create('Admin/test.jpg', fmOpenRead or fmShareDenyWrite );
  AResponseInfo.ContentStream := Stream;
  except
  Exit;
  end;
end;

Gruß

Assun

Assun 24. Jul 2005 15:23

Re: idHTTPServer : Login Identifizierung, wie realisieren ?
 
habe nun etwas code. doch ich weiss nicht wie ich den Namen übergeben soll.

Weiss da jemand was ?

MrKnogge 24. Jul 2005 15:25

Re: idHTTPServer : Login Identifizierung, wie realisieren ?
 
Dann zeig doch mal deinen Code.
Was meinst du mit übergeben ?

Von der HTML-Seite zu deinem Programm ?
Stichwort: Submit

gruss

Assun 24. Jul 2005 15:46

Re: idHTTPServer : Login Identifizierung, wie realisieren ?
 
Der Code steht oben.

Reicht es einfach die Felder abzusenden ??

Wie muss ich die Felder dann benennen ?

SirThornberry 24. Jul 2005 16:02

Re: idHTTPServer : Login Identifizierung, wie realisieren ?
 
du musst
Delphi-Quellcode:
AResponseInfo.AuthRealm
setzen. Damit bringt der Client (InternetExplorer etc.) einen Passwortdialog hoch wie man es von htaccess gewöhnt ist. Und auf diese Art und weiße kommt dann auch das Passwort zum Server.

MrKnogge 24. Jul 2005 16:06

Re: idHTTPServer : Login Identifizierung, wie realisieren ?
 
Du kannst es auch ganz normal wie ein Formular senden, die ergebnisse stehen dann in
Delphi-Quellcode:
ARequestInfo.params
gruss

Assun 24. Jul 2005 17:44

Re: idHTTPServer : Login Identifizierung, wie realisieren ?
 
Delphi-Quellcode:
If ARequestInfo.params := 'Assun' then.........
geht nicht. da bringr er mir "inkompatible Typen, String und TStrings"

nur wie soll ich da TStrings einbauen ?

Und wie kann ich realisieren, dass nach 2 werten gefragt wird ? also so in etwa

Delphi-Quellcode:
if ARequestInfo.params := 'Assun' and 'meinpasswort' then....
?

:confused:

MrKnogge 24. Jul 2005 17:49

Re: idHTTPServer : Login Identifizierung, wie realisieren ?
 
params ist vom Typ TStrings also
Delphi-Quellcode:
ARequestInfo.params[0]
ARequestInfo.params[1]
...
Die Anzahl der Parameter bekommst du mit
Delphi-Quellcode:
ARequestInfo.paramcount-1

Assun 24. Jul 2005 19:58

Re: idHTTPServer : Login Identifizierung, wie realisieren ?
 
ok, dank Mr.Knogges Hilfe (THX !!!) geht das einloggen nun !!

mit diesem Code :

Delphi-Quellcode:
function Parse(char, s: string; count: integer): string;
 var
   i: Integer;
   t: string;
 begin
   if s[length(s)] <> char then
     s := s + char;
   for i := 1 to count do begin
     t := copy(S, 0, pos(char, s) - 1);
     s := copy(s, pos(char, s) + 1, length(s));
   end;
   result := t;
 end;
und

Delphi-Quellcode:
procedure TForm1.IdHTTPServer1CommandGet(AContext: TIdContext;
  ARequestInfo: TIdHTTPRequestInfo; AResponseInfo: TIdHTTPResponseInfo);
Var
  Stream: TFilestream;
  TheString : String;
  i, Anzahl : Integer;

  begin
if ARequestInfo.Document = '/' then
begin
  try
  begin

    AResponseInfo.ContentType  := 'text/html';
    Stream := TfileStream.Create('Admin/login.htm', fmOpenRead or fmShareDenyWrite );
    AResponseInfo.ContentStream := Stream;
    setlength(TheString, stream.size);
    stream.Read(TheString[1], stream.size);
    Anzahl := ARequestInfo.Params.Count;

    for i := 1 to Anzahl do


  if (parse('=', ARequestInfo.params[0], 1) = 'submit') and
          (parse('=', ARequestInfo.params[0], 2) = '1') then
          if (parse('=', ARequestInfo.params[1], 1) = 'username') and
             (parse('=', ARequestInfo.params[1], 2) = 'Assun') then
            if (parse('=', ARequestInfo.params[2], 1) = 'password') and
               (parse('=', ARequestInfo.params[2], 2) = 'test') then begin

    AResponseInfo.ContentType  := 'text/html';
    Stream := TfileStream.Create('Admin/test.htm', fmOpenRead or fmShareDenyWrite );
    AResponseInfo.ContentStream := Stream;
    setlength(TheString, stream.size);
    stream.Read(TheString[1], stream.size);
    userok := true;
               end;
   end
   except
   Exit;
end;
end;
end;

end.
Meine Bitte : geht bitte alle mal auf http://assun.gotdns.com/ (mein delphi http server) und loggt euch ein. dann steht da "sie sind eingeloggt". das ist eine htm datei namens "test.htm" <-- versucht mal diese anzuzeigen ohne das ihr euch einloggt !

Um euch normal einzuloggen :

Name = Assun
Passw = test

Und noch ne Frage : wie kann ich erreichen, dass das passw nicht mehr im Browser oben inner Adresszeile angezeigt wird ?

Vielen Dank für eure Mühe !

Gruß Assun

Edit // Und wie immer bitte Rückmeldung geben. also "Geht das einloggen?", "habt ihr ne Sicherheitslücke gefunden?" oder "wisst ihr wie ich das umgehen kann dass man inner Adresszeile den Namen + passw sieht?"

;-)

Assun 25. Jul 2005 10:51

Re: idHTTPServer : Login Identifizierung, wie realisieren ?
 
Hat jemand geschafft auf test.htm zuzugreifen ohne sich einzuloggen ?

Oder hat jemand ne Idee wie man es umgehen kann dass das passw in der Adresszeile angezeigt wird ?

http://assun.gotdns.com


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:08 Uhr.
Seite 1 von 2  1 2      

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 by Thomas Breitkreuz