Autor Téma: IDHttpServer SESSION  (Přečteno 394 krát)

Offline jarex

  • Plnoletý
  • ***
  • Příspěvků: 246
  • Karma: 5
IDHttpServer SESSION
« kdy: 16-06-2024, 23:29:09 »
Moc bych poprosil, jak se toto řeší. POST a GET mám vyřešen, ale potřebuji udělat přihlašovací stránku a s tím si nevím rady. Nejlépe njaký příklad, pokud by byl někdo ochotný. V Delphi dělám párkrát do roka.
D2007 Professional

Offline Radek Červinka

  • Administrátoři
  • Padawan
  • *****
  • Příspěvků: 3474
  • Karma: 112
    • Verze Delphi: D2007, DXE + 2 poslední
    • O Delphi v češtině
Re:IDHttpServer SESSION
« Odpověď #1 kdy: 17-06-2024, 10:27:20 »
Přesně si to nepamatuji, tak podle AI:

Správa SESSION v Delphi pomocí komponenty IDHttpServer je možná nastavením vlastnosti SessionState na True. Tato vlastnost je ve výchozím stavu nastavena na False. IDHttpServer používá pro správu session cookies, takže je nutné, aby klienti měli povolené cookieshttps://stackoverflow.com/questions/34415978/creating-idhttpserver-with-ssl-encryption.

Pro autentizaci uživatelů je třeba ji provést manuálně. Pokud klienti používají HTTP založenou autentizaci, jsou k dispozici vlastnosti ARequestInfo.UserName a ARequestInfo.Password. Pokud nejsou platné, je třeba odeslat příslušnou odpověď 401 zpět klientovi. Pokud nastavíte vlastnost AResponseInfo.AuthRealm na neprázdný řetězec, IDHttpServer zašle odpověď 401 automatickyhttps://stackoverflow.com/questions/34415978/creating-idhttpserver-with-ssl-encryption.

Výchozí podpora IDHttpServer je pro BASIC autentizaci. Pokud chcete podporovat další schémata autentizace, musíte použít událost OnParseAuthentication a odeslat odpověď 401 manuálně, abyste mohli odeslat vhodné hlavičky WWW-Authenticatehttps://stackoverflow.com/questions/34415978/creating-idhttpserver-with-ssl-encryption.

Příklad kódu pro nastavení SessionState a základní autentizace by mohl vypadat takto:

procedure TMyForm.StartServer;
begin
// Nastavení serveru
IdHTTPServer.SessionState := True;
IdHTTPServer.OnCommandGet := IdHTTPServerCommandGet;
// Další nastavení serveru...
end;

procedure TMyForm.IdHTTPServerCommandGet(AContext: TIdContext; ARequestInfo: TIdHTTPRequestInfo; AResponseInfo: TIdHTTPResponseInfo);
begin
// Autentizace
if (ARequestInfo.AuthUsername = 'uzivatel') and (ARequestInfo.AuthPassword = 'heslo') then
begin
// Uživatel je autentizován, můžete zde spravovat session
end
else
begin
// Neplatné přihlašovací údaje, pošlete odpověď 401
AResponseInfo.AuthRealm := 'MujServer';
AResponseInfo.ResponseNo := 401;
end;
end;

Tento kód ukazuje základní nastavení serveru a zpracování autentizace. Nezapomeňte, že správa session a autentizace může být závislá na konkrétních požadavcích vaší aplikace a může vyžadovat další logiku a bezpečnostní opatření.
Embarcadero MVP - Czech republic