>
> Здравствуйте.
>
> УРА!!!!!!! Меня поняли! Как это приятно!
>
:-))))))))
> > А смысл вот какой ( у меня так, по крайней мере, было ). Есть дир-я.
> > В ней лежит N CGIшек, доступные БЕЗ авторизации и парочка С авторизацией.
> > Штука вот в чем. Пока юзер бегает по обычным CGI -- все OK. Но после того,
> > как он авторизовался на одной из авторизованных CGI, Netscape начинает
> > посылать заголовок Authorization ( уж не помню как там его ) при обращении
> > К ЛЮБОМУ CGI этой директории. И если бы Apache передавал бы расшифрованный
> > Authorization в виде REMOTE_USER неавторизованным CGI, они бы знали, что
> > юзер уже авторизовался и могли бы вести себя ( при наличии REMOTE_USER )
> > чуточку иначе.... А так -- Authorization передается, а CGI об этом не
> > знает.
> Теперь бы еще узнать, как Вы ее решили...
>
Да не решил я ее нифига... вернее, полурешил - а потом сделался крызис,
и этот проэкт канул в лету :-(
> > Да, еще просьба к адептам perl'а. Конференция по Apache, а не по perl.
> > Не все хотят и не все МОГУТ использовать perl, mod_perl и так далее.
> > Поэтому однозначные варианты ответов "ставь perl !!!" не всегда могут
> > быть приняты.... в вообще, будем терпимее друг к другу!
> Вот именно, Перл у меня есть, я его очень люблю, и может до
> mod_perl поставлю, но вся проблема в том, что я это делаю не
> только для себя, поэтому хочется более универсального
> решения. С mod_rewrite мне понравилось, но он столько
> весит... Так не хочется его везде за собой таскать из за
> одного заголовка в одном скрипте...
>
Кто-то тут советовал Cookies. Really это лучший выбор. Он решает
очень много проблем ( как я понял, LOGOGUT со стандартной WWW-авторизацией
сделать невозможно, это тут обсуждалось ). Плюс это, то и так далее.
Когда меня это приперло ( велели кровь из носу сделать LOGOUT ) мне
пришлось делать собственную авторизацию. Я сделал это примерно так
( сразу попрошу любитлей покритиковать вместе к критикой написать
способ НОРМАЛЬНОГО LOGOUT со стандартной ) :
Для всех HTML/CGI некой области объявляется :
AddHandler cgi-script .sh
Alias /Requestor /some/path/Req.sh
Action check-pass /Requestor
AddHandler check-pass .cgi .html .htm
Этот Req.sh проверяет наличие некоего Cookies'а. Если он есть и
содержит ( в зашифрованном виде ) логин/пассворд, то Req.sh либо выдает
HTML, либо запускает CGI.
Если cookies'а нет ( или пароль в нем не тот ) он выдает примерно
вот что :
<script> window.open('/Requestor', 'pass', '.....' ) </script>
Открывается окошко, где ( /Requestor не авторизуется сам собой !!! )
выдает формочку для ввода логин/пароль. По POST он ее обрабатывает, и
если ввели правильный пароль, то он выдает cookies с зашифрованными
логин/пароль и следующий документ :
<script> opener.location.reload(true); window.close() </script>
А в документе opener лежит window.open(...), а URL документа там тот,
который мы изначально запрашивали. То есть вызывается искомый документ.
Знаю, в этом методе есть несколько подводных камней :
1. Наличие JavaScript. Но моя система ( к которой присабачена
авторизация ) и так активно его юзает.
2. Оно работает с Mozilla/3.0 и выше. В IE3 - нет. Ну и [censored] с ним.
3. Оно не будет работать, если документ ( если нужно запросить пароль )
вызывается методом POST -- Netscape выдаст что-то типа 'Repost form
data' или тому подобное. Ну что ж.... приходится мириться.
4. Долго... знаю, надо модуль писать. Тока никто мне тут не рассказал, как
это делать и/или где об этом почитать.
Ну а в остальном -- вполне рабочая система. Элементарный LOGOGUT
( можно даже на JavaScript ), гибкость и т.п. Система работает уже полгода
и никаких нареканий. Да и потом -- вспомним, что обычный Authorization
передает пароль в открытом виде ( кодирование по Base64 не в счет ). А
тут можно этот Cookies так закриптовать ( благо, алгоритм-то свой можно
поставить!!! ), что шиш разгадаешь.
Вобчем, вот такие пироги... а вообще sorry за флейм. Если таких писем
не стоит сюда кидать ( если они под флейм попадают ) -- Alex ты скажи!
Впредь буду.... более краток :-)))
За сим все, всем приветы, всегда ваш,
Феликс.
=============================================================================
= Apache-Talk@lists.lexa.ru mailing list =
Mail "unsubscribe apache-talk" to majordomo@lists.lexa.ru if you want to quit.
= Archive avaliable at http://www.lexa.ru/apache-talk =