我的最后一个问题是如何在perl中实现基本身份验证,我得到了答案。
之后我试着编写我的code.i在我的http标题中使用-status => '401 Not Authorized'
当我尝试打开我的程序时它要我输入用户名和密码。在我的代码中我得到了包含ENV变量的标题包括这个用户名和密码,并检查它是否是我想要的。我的问题是,当我在身份验证框中输入用户名和密码,如下
我应该点击取消按钮来获取响应标题!!那么这里的确定按钮是什么? 它是我的验证码
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";
}
之前我曾尝试使用CGI::Auth::Basic
,但它对我不起作用并在模块中显示错误。
感谢您的回答。
一段时间后我解决了我的问题所以我决定告诉谁也有这个问题的答案。 你应该先检查是否定义了$ ENV {HTTP_AUTHORIZATION}。如果定义了你应该检查用户通行证,如果它是真的,你打印&#34;内容类型:text / HTML&#34;,&#34; \ ñ\ n&#34;这意味着200ok!如果未定义ENV,则应打印打印标题(-type =&gt;&#39; text / html&#39;,-status =&gt;&#39; 401 Not Authorized&#39;,&# 39; WWW-Authenticate&#39; =&gt;&#39;基本领域=&#34;视频&#34;&#39;)以显示身份验证框。
$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"');
}
答案 0 :(得分:1)
HTTP Basic Auth分两步完成:
第一步:
第二步:
Authorization
标题希望能回答你的问题。如果没有,我不明白你的问题。