Forum Webscript.Ru
Программирование => Perl => Тема начата: Kwazar от 28 Января 2005, 15:39:00
-
Как сделать так, что бы данные не сверялись с файлом .htpasswd, через скрипт сверялись с БД?
Т.е. как передать данные самому скрипту и как получить этим скриптом данные полей логина и пароля?
Заранее благодарю
-
Kwazar
модуль к апачу написать...
-
А более простого способа нет?
Ведь таких сайтов довольно много, с огромной базой зарегистрированных пользователей. Никогда не поверю, что все хранят данные пользователей в .htpasswd
-
Kwazar
чем тебя не устараивает авторизация допустим через сессии или куки?
-
commander
Вопрос не в том, чем не устраиват, а в том, как научиться делать то, что я делать еще не умею.
Самообразование, блин. :)
-
Kwazar
скриптов авторизации... и статей по созданию мульён... google.com тебе в этом поможет... :)
-
commander
Да я все понимаю. Просто нужен пинок в правильном направлении. С чего начинать капать.
Да и может, кто-то из здешних уже сталкивался с этой задачей
-
Kwazar
ну если пинок то рецепт простой авторизации:
БД:
CREATE TABLE users
(
users_id serial, --int not null auto_increment
username varchar(20),
"password" varchar(20),
CONSTRAINT users_pk PRIMARY KEY (users_id) -- PRIMARY KEY (users_id)
);
далее принемаем от юзера его имя пользователя и пароль... сравниваем со значениями в БД если всё хорошо то записываем в куки username и редиректим в закрытую часть:
my $cookie = Create_Cookie("1h", $user);
print redirect(-uri=>"main.cgi", -cookie=>$cookie);
в закрытой части при каждом переходе проверяем куки на наличие username если имени пользователя там нет, редиректим на страницу входа...
P.S. ну это вкратце... и не самый лучший и надежный способ... но для начала я думаю хватит...
-
commander
Пинок в направлении базовой авторизации. :)
Извини, запутал тебя.
-
Kwazar:
Никогда не поверю, что все хранят данные пользователей в .htpasswd
никогда не поверю что многие используют базовую авторизацию.
есть готовые модули, которые вместо .hpasswd используют mysql - mod_auth_mysql
-
commander:
my $cookie = Create_Cookie("1h", $user); print redirect(-uri=>"main.cgi", -cookie=>$cookie); в закрытой части при каждом переходе проверяем куки на наличие username если имени пользователя там нет, редиректим на страницу входа...
плохой способ идентификация пользователя получается проходит лишь по логину.
-
Green Kakadu
рецепт простой авторизации:
описывая этот способ я подчеркнул, что этот способ простой, но кстати весьма эфективный... :)
P.S. особенно когда именя пользоваетеля в куки содердит 128 битный ключ... ;)
-
commander:
P.S. особенно когда именя пользоваетеля в куки содердит 128 битный ключ...
Все равно, предпочтительнее писать в куки (если так уж хочется), не логин и пароль, а id (экономим на sql запросах в дальнешем) и сгененрируванную сессию. И все это в 128 битном ключе :)
Что касается моей нелюбви к кукисам, то по моей статистике 10% посетителей (иностранная тематика сайта) приходят ко мне с выключенной поддержкой "ключиков". А через GET я не хочу передавать сессию.
-
Макс
Огромное спасибо. Именно это я и спрашивал
-
Связался с поддержкой хостинга, попросил установить модуль.
Вот что они ответили:
К сожалению, поставить этот модуль не представляется возможным, так как его поддержка больше не осуществляется разработчиками и он работает только с
MySQL-клиентов 3-ей ветки.
Есть ли иные способы?
-
Kwazar
Все равно, предпочтительнее писать в куки (если так уж хочется), не логин и пароль, а id (экономим на sql запросах в дальнешем) и сгененрируванную сессию. И все это в 128 битном ключе
я тебе описал простенький способ авторизаци... не притендующий на использование в серьездных системах... мне конечно льстит, что ты так рьяно принялся его критиковать... но поверь способ того не стоил... :)
Есть ли иные способы?
написать модуль к Апачу... - это не так сложно как кажеться... ;)