Meine letzte Frage war, wie man grundlegende Authentifizierung in Perl implementieren und ich bekam meine Antwort. danach habe ich versucht, meine code.i geschrieben -status => '401 Not Authorized'
in meinem http-Header und wenn ich versuche, mein Programm zu öffnen, will ich mich Benutzer und password.in meinem Code habe ich peice Header mit ENV-Variable, die diesen Benutzernamen und Passwort und überprüfen, ob es das war, was ich will.Mein Problem ist, dass, wenn ich Benutzer und Passwort in Authentifizierungsbox wie unten wie erhalten Antwort HTTP-Header?
eingeben, ich sollte auf Abbrechen Schaltfläche klicken, um Antwortkopf zu erhalten !! Also, was ist OK Button hier? seine mein Bestätigungscode
print header(-type => 'text/html', -status => '401 Not Authorized',
'WWW-Authenticate' => 'Basic realm="Videos"');
print "<HTML>";
print "<HEAD>";
print "<TITLE>this is Test-Case</TITLE>";
print "</HEAD>";
my $signin = $ENV{HTTP_AUTHORIZATION};
my($basic,$userpass) = split(' ', $signin);
($userpass,$eq) = split('=',$userpass);
$userpass = decode_base64($userpass);
my ($user,$pass) = split(':',$userpass);
my $query = new CGI;
if($user eq 'aa' and $pass eq 'aa'){
show something
}
else{
print "wrong user or pass";
}
ich versuchte CGI::Auth::Basic
bevor zu verwenden, aber es funktioniert nicht in Modul für mich und zeigen Fehler zu arbeiten.
Danke für Ihre Antworten.
Ich löste mein Problem nach einer Weile, also entschied ich mich, die Antwort zu geben, wer dieses Problem auch hat. sollten Sie prüfen, ob $ ENV {HTTP_AUTHORIZATION} definiert ist oder nicht.wenn es definiert ist, sollten Sie den Benutzerpass überprüfen und wenn es wahr ist, drucken Sie "Content-Type: text/HTML", "\ n \ n" bedeutet 200ok ! und wenn der ENV nicht definiert ist sollte man print header (-type => 'text/html', -status => '401 Not Authorized', 'WWW-Authenticate' => 'Basic realm = "Videos"') an Zeigen Sie das Authentifizierungsfeld an.
$signin = $ENV{HTTP_AUTHORIZATION};
if(defined $signin){
check user and password here
if(true user and password){
print "Content-Type: text/HTML", "\n\n";
do your all works here
}
else{
wrong password
}
}
else{
print header(-type => 'text/html', -status => '401 Not Authorized','WWW-Authenticate' => 'Basic realm="Videos"');
}
Ihr Code sieht gut aus.Haben Sie versucht, die Werte der einzelnen Schritte dazwischen auszugeben ('$ signin, $ basic, $ userpass, $ user, $ pass'), um zu sehen, ob alles so ist, wie Sie gedacht haben? – Sebastian
@Sebastian ja ich drucke sie und alle von ihnen sind korrekt.Sie wissen, dass mein Code funktioniert.aber, nachdem ich auf OK-Schaltfläche klicken Sie auf Abbrechen Schaltfläche! Ich will, dass es funktioniert, nachdem ich auf OK-Taste geklickt habe. – farzane