URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID8
Нить номер: 6212
[ Назад ]

Исходное сообщение
" Http-авторизация на Perl, как сделать?"

Отправлено Gekt0r , 19-Фев-09 13:38 
Всем привет, вопрос следующий..
Есть большой сайт, сделанный на перле с использованием HTML::Mason.
Надо сделать возможность вешать апач-авторизацию на некоторые страницы сайта (и при желании ее отключать и снова включать из админки).
Я несколько дней копаюсь и уже с этим завис.
В инете нашел решение, однако оно требует подключения к апачу mod_rewrite, а хочется без этого.

Пока все, что я сделал, это научился вызывать запрос авторизации на страницу:


    
use CGI;
my $q = CGI->new;
print $q->header(-status => 401,
                  -www_authenticate => 'Basic realm="test"',
                  -type => 'text/html'),
       $q->start_html('Authorization required'),
       $q->h2('Authorization required'),
       $q->end_html;


благодаря этому, у меня вываливается запрос авторизации. Однако я не знаю, как получить данные, которые введет пользователь. Можете подсказать?


Содержание

Сообщения в этом обсуждении
" Http-авторизация на Perl, как сделать?"
Отправлено angra , 19-Фев-09 13:50 
Либо делайте нормальную авторизацию скриптом, либо используйте авторизацию самого апача. Имитировать http авторизацию через скрипт это очень плохая идея.
Кстати, если уж заюзали такого монстра как Mason, то почему бы сразу не взять Catalyst вместо конструирования своих велосипедов?

" Http-авторизация на Perl, как сделать?"
Отправлено Gekt0r , 19-Фев-09 14:20 
>Либо делайте нормальную авторизацию скриптом, либо используйте авторизацию самого апача. Имитировать http
>авторизацию через скрипт это очень плохая идея.
>Кстати, если уж заюзали такого монстра как Mason, то почему бы сразу
>не взять Catalyst вместо конструирования своих велосипедов?

ммм.. Можно подробнее.. как это можно сделать?)


" Http-авторизация на Perl, как сделать?"
Отправлено angra , 19-Фев-09 15:06 
Сделать что:
1. Авторизацию скриптом? Ну вы программист или где? Основная идея в том, что после проверки логина/пароля создаем запись в хранилище(файл/бд/объект в памяти) и уникальный ключ доступа к ней, ключ закидываем пользователю в куку. При последующих обращениях проверяем куку и по ключу ищем запись, если найдена значит авторизован.
2. Таки через апач и из админки? Так создавайте/меняйте .htaccess и .htpasswd файлы в нужных директориях, синтаксис и примеры на httpd.apache.org
3. Воспользоваться Catalyst? Ну тут search.cpan.org к вашим услугам.

" Http-авторизация на Perl, как сделать?"
Отправлено Gekt0r , 19-Фев-09 15:55 
>Сделать что:
>1. Авторизацию скриптом? Ну вы программист или где? Основная идея в том,
>что после проверки логина/пароля создаем запись в хранилище(файл/бд/объект в памяти) и
>уникальный ключ доступа к ней, ключ закидываем пользователю в куку. При
>последующих обращениях проверяем куку и по ключу ищем запись, если найдена
>значит авторизован.
>2. Таки через апач и из админки? Так создавайте/меняйте .htaccess и .htpasswd
>файлы в нужных директориях, синтаксис и примеры на httpd.apache.org
>3. Воспользоваться Catalyst? Ну тут search.cpan.org к вашим услугам.

Я - единственный программист в компании, кучу всего пришлось освоить самому))
Ну а это пока не получается)
Если
1. Где мануал взять? Или хотя бы как получить данные аутентификации, которые вводит юзер в окошке http-авторизации?

К поисковикам и целым сайтам, конечно, классно отсылать.. Но если бы я не облазил уже всн, что можно, тему бы не создавал...


" Http-авторизация на Perl, как сделать?"
Отправлено angra , 19-Фев-09 16:14 
Если вам таки нужна именно http авторизация через скрипт, то тут я вам не помощник, не люблю помогать в откровенных глупостях. Пункт 1 был об обычной авторизации через форму, а не о http авторизации. Зачем вообще она вам сдалась?


" Http-авторизация на Perl, как сделать?"
Отправлено Gekt0r , 19-Фев-09 14:33 
Я брал идею отсюда:
http://www.opennet.me/base/dev/cgi_auth_401.txt.html

в разных источниках в инете нечто подобное предлагается


" Http-авторизация на Perl, как сделать?"
Отправлено Иван Иваныч , 24-Фев-09 12:03 
>[оверквотинг удален]
>print $q->header(-status => 401,
>                  -www_authenticate => 'Basic realm="test"',
>                  -type => 'text/html'),
>       $q->start_html('Authorization required'),
>       $q->h2('Authorization required'),
>       $q->end_html;
>
>
>благодаря этому, у меня вываливается запрос авторизации. Однако я не знаю, как
>получить данные, которые введет пользователь. Можете подсказать?

Если уж взяли mason, то берите модуль MasonX::Request::WithApacheSession и если мозг в наличии, то думаю сообразите как сделать сессию авторизованной или неавторизованной. Ну а с чтением данных их форм Mason вроде отлично справляется.