Gleiches Problem hat mich auch beschäftigt...
Also mal kurz geschaut, so baut den String
Indy zusammen:
Delphi-Quellcode:
function TIdBasicAuthentication.Authentication: String;
begin
result := 'Basic ' {do not localize}
+ TIdEncoderMIME.EncodeString(Username + ':' + Password); {do not localize}
end;
Das heißt, man kann es auch dekodieren
Delphi-Quellcode:
{...}
Uses IdCoderMIME;
{...}
Procedure TwbmHelloWorld.wbmHelloWorldwbaTestAccAction( Sender: TObject; Request: TWebRequest; Response: TWebResponse; Var Handled: Boolean );
Var sAuth: String;
Const cAuthBasic = 'Basic ';
Begin
sAuth := '';
If Request.Authorization <> '' Then Begin
If SameText( cAuthBasic, Copy( Request.Authorization, 1, Length( cAuthBasic ) ) ) Then Begin
If Length( Request.Authorization ) > Length( cAuthBasic ) Then Begin
sAuth :=TIdDecoderMIME.DecodeString( Copy( Request.Authorization,
Length( cAuthBasic ) + 1,
Length( Request.Authorization ) ) );
End;
End;
End;
{...}
End;
Hintergrund:
Zitat:
Die zum Server übertragenen Zugangsdaten müssen das Format "<Benutzername>:<Passwort>" haben und als ganzes BASE-64 ("MIME") codiert sein. Im Kontextmenü des Eingabefeldes "Ersetzungsausdruck" gibt es dafür einen Menüpunkt, der den jeweils markierten Text codiert oder decodiert.
Der Inhalt des ganzen Feldes muss so aussehen: basic PEJlbnV0emVybmFtZT46PFBhc3N3b3J0Pg==
"basic" ist die Name des Anmeldeverfahrens und der nachfolgende String ist die codierte Form der Zugangsdaten.
Bye Christian