Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- use CGI;
- my $cgi = new CGI;
- authorize();
- {
- # веб приложение
- # ...
- }
- sub authorize
- {
- # второй шаг: смотрим если браузер отослал хедер 'Authorization' с данными
- # и просим нажать Cancel :/
- #(без проверки на валидность хеша, тут предполагается что данные верны)
- if( defined $ENV{HTTP_AUTHORIZATION} ) ########### 2 ####################
- {
- print $cgi->header(-type=>'text/html',
- -status=>'401 Unauthorized',
- -cookie=>'sessid=TATATATATATAT',
- 'WWW-Authenticate'=>'Basic realm="PRESS Cancel BUTTON!!1"',
- -charset=>'utf-8'
- ),
- $cgi->start_html(-title=>''),
- $cgi->h1("Refresh it."),
- $cgi->end_html;
- exit;
- }
- # третий шаг: смотрим на кук и идём дальше...
- elsif( $ENV{HTTP_COOKIE} =~ /sessid=([^;=]+)/) ########### 3 ####################
- {
- # itsok
- }
- # первый шаг: отсылаем настоящий запрос авторизации
- else ########### 1 ####################
- {
- basic_auth();
- }
- }
- sub basic_auth
- {
- print $cgi->header(-type=>'text/html',
- -status=>'401 Authorization Required',
- -charset=>'utf-8'
- ),
- $cgi->start_html(-title=>'Err0r'),
- $cgi->h1("Unauthorized"),
- $cgi->end_html;
- exit;
- }
Advertisement
Add Comment
Please, Sign In to add comment