Передача параметров авторизации на shtml страницу
От: CoolAndy  
Дата: 22.02.05 10:51
Оценка:
Доброго времени суток!
Столкнулся тут с таким траблом. Есть shtml-страница (test.shtml):

<html>
<a href="/cgi-bin/a.cgi">Авторизация</a><br><br>
<!--#include virtual="/cgi-bin/a.cgi?$QUERY_STRING" -->
</html>


Код скрипта a.cgi:

#!perl -w 

use MIME::Base64;

$ENV{HTTP_CGI_AUTHORIZATION} =~ s/basic\s+//i;
($REMOTE_USER,$REMOTE_PASSWD) = split(/:/,decode_base64($ENV{HTTP_CGI_AUTHORIZATION}));

if (!UserAccess($REMOTE_USER,$REMOTE_PASSWD))
   {
    print "WWW-Authenticate: Basic realm=\"Тестовая программа\"\n";
    print "Status: 401 Unauthorized\n\n";
    print "Ошибка авторизации!\n";
    exit;
   }
print "Content-type: text/html\n\n";
print "Подьзователь: $user<br><br>";
print "<a href=http://localhost/test.shtml>111</a>";
exit;

sub UserAccess {
  my $aUser = $_[0];
  my $aPass = $_[1];

if (($aUser eq "serga") and ($aPass eq "123123"))
   {
    $res=1;
    $user = "Серега";
   }
if (($aUser eq "") and ($aPass eq ""))
   {
    $res=1;
    $user = "неавторизован";
   }
  return $res;
}


Происходит вот что: загружаем страницу test.shtml, получаем — пользователь неавторизован. Жмем на ссылку, появляется штатное окно с логином-паролем. Авторизуемся. На сгенерированной странице — пользователь: Серега. Однако после клика на ссылку выводится test.shtml и пользователь:неавторизован. Хотя сервер помнит о том, что создал сессию под пользователя, так как при повторном клике на Авторизацию окно с паролем уже не выскакивает и скрипт сразу генерирует страничку с именем авторизованного пользователя.

Вот, собственно, что нужно: shtml-страница генерируется скриптом a.cgi. Со страницы есть ссылка на скрипт, при нажатии на которую происходит авторизация пользователя средствами Perl. После авторизации скрипт должен ОБЯЗАТЕЛЬНО! снова загрузить test.shtml, не потеряв при этом имени пользователя.

Бъюсь уже третий день — ничего не выходит. Предполагаю, что при клике на ссылку, сгенерированную скриптом, в заголовке запроса теряются данные авторизации, а вот как их сохранить — не знаю... Help, plz!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.