Forum Webscript.Ru

Программирование => Perl => Тема начата: Kwazar от 28 Января 2005, 15:39:00

Название: Базовая авторизация с хранением данных в БД
Отправлено: Kwazar от 28 Января 2005, 15:39:00
Как сделать так, что бы данные не сверялись с файлом  .htpasswd, через скрипт сверялись с БД?

Т.е. как передать данные самому скрипту и как получить этим скриптом данные полей логина и пароля?

Заранее благодарю
Название: Базовая авторизация с хранением данных в БД
Отправлено: commander от 28 Января 2005, 15:41:59
Kwazar
модуль к апачу написать...
Название: Базовая авторизация с хранением данных в БД
Отправлено: Kwazar от 28 Января 2005, 15:48:23
А более простого способа нет?

Ведь таких сайтов довольно много, с огромной базой зарегистрированных пользователей. Никогда не поверю, что все хранят данные пользователей в .htpasswd
Название: Базовая авторизация с хранением данных в БД
Отправлено: commander от 28 Января 2005, 16:04:35
Kwazar
чем тебя не устараивает авторизация допустим через сессии или куки?
Название: Базовая авторизация с хранением данных в БД
Отправлено: Kwazar от 28 Января 2005, 16:09:10
commander
Вопрос не в том, чем не устраиват, а в том, как научиться делать то, что я делать еще не умею.

Самообразование, блин. :)
Название: Базовая авторизация с хранением данных в БД
Отправлено: commander от 28 Января 2005, 16:21:38
Kwazar
скриптов авторизации... и статей по созданию мульён... google.com тебе в этом поможет... :)
Название: Базовая авторизация с хранением данных в БД
Отправлено: Kwazar от 28 Января 2005, 16:39:20
commander
Да я все понимаю. Просто нужен пинок в правильном направлении. С чего начинать капать.
Да и может, кто-то из здешних уже сталкивался с этой задачей
Название: Базовая авторизация с хранением данных в БД
Отправлено: commander от 28 Января 2005, 17:00:58
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. ну это вкратце... и не самый лучший и надежный способ... но для начала я думаю хватит...
Название: Базовая авторизация с хранением данных в БД
Отправлено: Kwazar от 28 Января 2005, 17:03:07
commander
Пинок в направлении  базовой авторизации. :)
Извини, запутал тебя.
Название: Базовая авторизация с хранением данных в БД
Отправлено: Макс от 29 Января 2005, 12:30:45
Цитировать
Kwazar:
Никогда не поверю, что все хранят данные пользователей в .htpasswd

никогда не поверю что многие используют базовую авторизацию.

 есть готовые модули, которые вместо .hpasswd используют mysql - mod_auth_mysql
Название: Базовая авторизация с хранением данных в БД
Отправлено: Green Kakadu от 29 Января 2005, 13:48:08
Цитировать
commander:
my $cookie = Create_Cookie("1h", $user); print redirect(-uri=>"main.cgi", -cookie=>$cookie); в закрытой части при каждом переходе проверяем куки на наличие username если имени пользователя там нет, редиректим на страницу входа...

плохой способ идентификация пользователя получается проходит лишь по логину.
Название: Базовая авторизация с хранением данных в БД
Отправлено: commander от 29 Января 2005, 14:25:11
Green Kakadu
Цитировать
рецепт простой авторизации:

описывая этот способ я подчеркнул, что этот способ простой, но кстати весьма эфективный... :)

P.S. особенно когда именя пользоваетеля в куки содердит 128 битный ключ... ;)
Название: Базовая авторизация с хранением данных в БД
Отправлено: Kwazar от 31 Января 2005, 13:09:17
Цитировать
commander:
P.S. особенно когда именя пользоваетеля в куки содердит 128 битный ключ...

Все равно, предпочтительнее писать в куки (если так уж хочется), не логин и пароль, а id (экономим на sql запросах в дальнешем) и сгененрируванную сессию. И все это в 128 битном ключе :)

Что касается моей нелюбви к кукисам, то по моей статистике 10% посетителей (иностранная тематика сайта) приходят ко мне с выключенной поддержкой "ключиков". А через GET я не хочу передавать сессию.
Название: Базовая авторизация с хранением данных в БД
Отправлено: Kwazar от 31 Января 2005, 13:14:59
Макс
Огромное спасибо. Именно это я и спрашивал
Название: Базовая авторизация с хранением данных в БД
Отправлено: Kwazar от 31 Января 2005, 15:49:52
Связался с поддержкой хостинга, попросил установить модуль.
Вот что они ответили:
Цитировать

К сожалению, поставить этот модуль не представляется возможным, так как его поддержка больше не осуществляется разработчиками и он работает только с
MySQL-клиентов 3-ей ветки.

Есть ли иные способы?
Название: Базовая авторизация с хранением данных в БД
Отправлено: commander от 31 Января 2005, 18:51:20
Kwazar
Цитировать
Все равно, предпочтительнее писать в куки (если так уж хочется), не логин и пароль, а id (экономим на sql запросах в дальнешем) и сгененрируванную сессию. И все это в 128 битном ключе

я тебе описал простенький способ авторизаци... не притендующий на использование в серьездных системах... мне конечно льстит, что ты так рьяно принялся его критиковать... но поверь способ того не стоил... :)
Цитировать
Есть ли иные способы?

написать модуль к Апачу... - это не так сложно как кажеться... ;)