Гость
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Логин/Пароль к админке через БД / 13 сообщений из 13, страница 1 из 1
19.08.2004, 09:34
    #32655984
ZoRROmbi
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Логин/Пароль к админке через БД
Я уж этот вопрос задавал в форуме InterBase, но вразумительного ответа не получил.
Я знаю что аутентификацию пользователей на сайте можно проводить не только через файлы .htpasswd (фу какая бяка), но и как у всех белых людей через базу данных.
Для этого надо ставить аутентификационный модуль под апача. Такие модули есть для мускула, постгре,скллайт, оракла и т.д.
Вопросы:
есть ли такой модуль для субд Interbase/FireBird?
если есть, то где взять(лично я уже замучался искать)?
если нет, то как можно обойти(есть модуль DBI, я где то прочитал что можно его использовать совместно с дровами для интербейса, но как ето сделать нет инфы), может кто подкинет информацию?
P.S.
Не спрашивайте пожалуйста почему я зациклился на интербейсе...
Для модера: не убивайте мой топик, я здесь этот вопрос разместил из-за того, что скорее всего в этом вопросе мне помогут веб-программисты, нежели спецы по БД.
Заранее благодарен.
...
Рейтинг: 0 / 0
19.08.2004, 09:59
    #32656022
LeXa NalBat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Логин/Пароль к админке через БД
есть модуль DBI, я где то прочитал что можно его использовать совместно с дровами для интербейса, но как ето сделать нет инфы

Используйте совместно DBI и DBD::InterBase .

У нас так сделана авторизация. Для этого в httpd.conf указано:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
<Directory /home/httpd/test>
 AuthName test
 AuthType Basic
 PerlAuthenHandler TestAuth
 <Limit GET POST>
  require valid-user
 </Limit>
</Directory>

И модуль TestAuth.pm такой:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
package TestAuth;

use     Apache::Constants   qw(OK AUTH_REQUIRED SERVER_ERROR);
use     Database;
use     Logger;
use     POSIX;

sub handler
{
    my  $req            =   shift;
    my  ($res,$passwd)  =   $req -> get_basic_auth_pw();
    my  $user           =   $req -> connection -> user();
    my  $date           =   POSIX::strftime("%c",localtime);

    if ( ! $res ) {
        $res = SERVER_ERROR;

        if ( ! $user ) {
            $req->note_basic_auth_failure();
            $res = AUTH_REQUIRED;
            Logger::std_warn ("TestAuth:User is empty:$user:$passwd:",  2 );
        } elsif ( my $cp = $rlda -> prepare(
                    'select password from users where
                    login = ?' ) ) {
            if ( $cp -> execute( $user ) ) {
                my  $r = $cp -> fetch();

                if ( $r || $DBI::err ==  0  ) {

                    if ( $r && $r -> [  0  ] &&
                            ( $passwd eq $r -> [  0  ] ) ) {
                        $res = OK;
                    } else {
                        $req->note_basic_auth_failure();
                        $res = AUTH_REQUIRED;

                        Logger::std_warn ("TestAuth:Input:$user:$passwd:",  2 );
                        if ( $r && $r -> [  0  ] ) {
                            Logger::std_warn ("TestAuth:Returned:$user:$r->[ 0 ]:",  2 );
                        } else {
                            Logger::std_warn ("TestAuth:Returned:$user:failed",  2 );
                        }
                    }
                } else {
                    Logger::std_warn ("Fetch: $DBI::errstr",  1 );
                }
            } else {
                Logger::std_warn ("Execute: $DBI::errstr",  1 );
            }
            $cp -> finish();
            $rlda -> disconnect() if $res != OK;
        } else {
            Logger::std_warn ("Prepare: $DBI::errstr",  1 );
        }
    }
    $res;
}

 1 ;

Модуль Database экспортирует переменную $rlda - объект класса DBI.
...
Рейтинг: 0 / 0
19.08.2004, 10:40
    #32656121
ZoRROmbi
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Логин/Пароль к админке через БД
О спасибо за ответ!Первый вразумительный.
И тут же вопрос.
"Используйте совместно DBI и DBD::InterBase."
Использовать DBD::InterBase это значит установить Связку для установки драйвера и установить сам драйвер, вроде так?
А что значит использовать DBI вместе с драйвером?Я в этих вопросах не дока.
Имелось в виду использовать модуль mod_authn_dbi?Или я что то не понял блин?
Пожалуйста, если не сложно весь софт какой нужен напишите. А то тут куча всего(драйвер, связка для него)
И...мне похоже повезло что у вас все на Перле, потому что у нас все тоже на нем родном.
...
Рейтинг: 0 / 0
19.08.2004, 10:52
    #32656159
ZoRROmbi
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Логин/Пароль к админке через БД
И еще...
А нельзя вообще не используя DBI самому написать модуль типа TestAuth.pm, в котором тупо используется IBPerl и происходит коннект к Базе данных ну а там все сравнивается?И никаких мучений с дополнительным софтом?Хотелось бы больше информации...
При том что у нас в самой базе то пароли хранятся как есть не в шифрованном виде.
...
Рейтинг: 0 / 0
19.08.2004, 11:25
    #32656281
ZoRROmbi
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Логин/Пароль к админке через БД
А куда помещать модуль TestAuth.pm?
в usr/lib ?
...
Рейтинг: 0 / 0
19.08.2004, 11:46
    #32656346
ZoRROmbi
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Логин/Пароль к админке через БД
А что за модули ты используешь?
у меня нет Logger и Database. Да и в нете не нашел:-(
Извиняюсь за большое колличество сообщений.
...
Рейтинг: 0 / 0
19.08.2004, 11:46
    #32656347
g613
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Логин/Пароль к админке через БД
ZoRROmbiО спасибо за ответ!Первый вразумительный.
И тут же вопрос.
"Используйте совместно DBI и DBD::InterBase."
Использовать DBD::InterBase это значит установить Связку для установки драйвера и установить сам драйвер, вроде так?
А что значит использовать DBI вместе с драйвером?

DBI - интервейс для работы с _БАЗАМИ_ДАННЫХ_
DBD::InterBase - драйвер для DBI, для работы с InterBase
...
Рейтинг: 0 / 0
19.08.2004, 11:47
    #32656352
g613
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Логин/Пароль к админке через БД
ZoRROmbiИ еще...
А нельзя вообще не используя DBI самому написать модуль типа TestAuth.pm, в котором тупо используется IBPerl и происходит коннект к Базе данных ну а там все сравнивается?

если есть желания извращаться то можно...
...
Рейтинг: 0 / 0
19.08.2004, 11:52
    #32656374
g613
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Логин/Пароль к админке через БД
ZoRROmbiА куда помещать модуль TestAuth.pm?
в usr/lib ?

там где его будет искать перл...

Код: plaintext
1.
perl -e 'print join("\n",@INC)'

или там где скажеш ему ты...
Код: plaintext
1.
perldoc lib
...
Рейтинг: 0 / 0
19.08.2004, 13:10
    #32656631
ZoRROmbi
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Логин/Пароль к админке через БД
g613 ZoRROmbiИ еще...
А нельзя вообще не используя DBI самому написать модуль типа TestAuth.pm, в котором тупо используется IBPerl и происходит коннект к Базе данных ну а там все сравнивается?

если есть желания извращаться то можно...
тут дело не в извращениях. просто я не знаю как работать с DBI и всякие дрова надо устанавливать, конфигурировать - тоска прям. А как работать с БД используя IBPerl - это я хорошо себе представляю.
...
Рейтинг: 0 / 0
19.08.2004, 13:25
    #32656676
LeXa NalBat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Логин/Пароль к админке через БД
Использовать DBD::InterBase это значит установить Связку для установки драйвера и установить сам драйвер, вроде так? А что значит использовать DBI вместе с драйвером? Я в этих вопросах не дока.

Тогда перед работой над таким модулем http-авторизации напишите простой перловый скрипт с использованием DBI и DBD::InterBase, который бы делал select из базы и выводил результат на STDOUT, чтобы научиться работать с этими модулями. См. perldoc DBI.

Имелось в виду использовать модуль mod_authn_dbi? Или я что то не понял блин?

Mod_authn_dbi мы не используем. Наверное, можно пойти и этим путем.

используется IBPerl и происходит коннект к Базе данных

Я не работал с IB, но вроде бы использование DBI и DBD::* - стандартный способ работы с базой. Думаю, что IBPerl в отличие от него - нестандартный.

А куда помещать модуль TestAuth.pm? в usr/lib?

В httpd.conf: "PerlScript /home/httpd/lib/startup.pl", в startup.pl: "use lib ..."

у меня нет Logger и Database. Да и в нете не нашел:-(

Это написанные нами модули. Удалите их из TestAuth.

я не знаю как работать с DBI и всякие дрова надо устанавливать, конфигурировать - тоска прям. А как работать с БД используя IBPerl - это я хорошо себе представляю.

Вроде бы не придется устанавливать ничего сложного, тем более драйверов. Работа через DBI, думаю, похожа на работу через IBPerl.
...
Рейтинг: 0 / 0
19.08.2004, 14:29
    #32656896
ZoRROmbi
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Логин/Пароль к админке через БД
LeXa NalBat
И модуль TestAuth.pm такой:

Код: plaintext
1.
2.
3.
4.
...        } elsif ( my $cp = $rlda -> prepare(
                    'select password from users where
                    login = ?' ) ) {
            ...

тут мы я как понял ждем ввода
LeXa NalBat
Код: plaintext
1.
2.
if ( $cp -> execute( $user ) ) {
                my  $r = $cp -> fetch();

а здесь выполнение запроса
Не могу найти функцию в IBPerl, которая предваряет выполнение, чтоб тоже получалось ожидание ввода. Может кто знает? А может такой вообще нет?
...
Рейтинг: 0 / 0
19.08.2004, 16:59
    #32657411
ZoRROmbi
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Логин/Пароль к админке через БД
Все заработало. Поставил там всякие DBD и DBI. Скрипт подредактировал основательно.Осталось всякие баги там исправить.
Спасибо всем, особенно LeXa NalBat и другану Витьку за первоначальную идею.
...
Рейтинг: 0 / 0
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Логин/Пароль к админке через БД / 13 сообщений из 13, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]