powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Логин/Пароль к админке через БД
13 сообщений из 13, страница 1 из 1
Логин/Пароль к админке через БД
    #32655984
ZoRROmbi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я уж этот вопрос задавал в форуме InterBase, но вразумительного ответа не получил.
Я знаю что аутентификацию пользователей на сайте можно проводить не только через файлы .htpasswd (фу какая бяка), но и как у всех белых людей через базу данных.
Для этого надо ставить аутентификационный модуль под апача. Такие модули есть для мускула, постгре,скллайт, оракла и т.д.
Вопросы:
есть ли такой модуль для субд Interbase/FireBird?
если есть, то где взять(лично я уже замучался искать)?
если нет, то как можно обойти(есть модуль DBI, я где то прочитал что можно его использовать совместно с дровами для интербейса, но как ето сделать нет инфы), может кто подкинет информацию?
P.S.
Не спрашивайте пожалуйста почему я зациклился на интербейсе...
Для модера: не убивайте мой топик, я здесь этот вопрос разместил из-за того, что скорее всего в этом вопросе мне помогут веб-программисты, нежели спецы по БД.
Заранее благодарен.
...
Рейтинг: 0 / 0
Логин/Пароль к админке через БД
    #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
Логин/Пароль к админке через БД
    #32656121
ZoRROmbi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
О спасибо за ответ!Первый вразумительный.
И тут же вопрос.
"Используйте совместно DBI и DBD::InterBase."
Использовать DBD::InterBase это значит установить Связку для установки драйвера и установить сам драйвер, вроде так?
А что значит использовать DBI вместе с драйвером?Я в этих вопросах не дока.
Имелось в виду использовать модуль mod_authn_dbi?Или я что то не понял блин?
Пожалуйста, если не сложно весь софт какой нужен напишите. А то тут куча всего(драйвер, связка для него)
И...мне похоже повезло что у вас все на Перле, потому что у нас все тоже на нем родном.
...
Рейтинг: 0 / 0
Логин/Пароль к админке через БД
    #32656159
ZoRROmbi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И еще...
А нельзя вообще не используя DBI самому написать модуль типа TestAuth.pm, в котором тупо используется IBPerl и происходит коннект к Базе данных ну а там все сравнивается?И никаких мучений с дополнительным софтом?Хотелось бы больше информации...
При том что у нас в самой базе то пароли хранятся как есть не в шифрованном виде.
...
Рейтинг: 0 / 0
Логин/Пароль к админке через БД
    #32656281
ZoRROmbi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А куда помещать модуль TestAuth.pm?
в usr/lib ?
...
Рейтинг: 0 / 0
Логин/Пароль к админке через БД
    #32656346
ZoRROmbi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А что за модули ты используешь?
у меня нет Logger и Database. Да и в нете не нашел:-(
Извиняюсь за большое колличество сообщений.
...
Рейтинг: 0 / 0
Логин/Пароль к админке через БД
    #32656347
g613
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ZoRROmbiО спасибо за ответ!Первый вразумительный.
И тут же вопрос.
"Используйте совместно DBI и DBD::InterBase."
Использовать DBD::InterBase это значит установить Связку для установки драйвера и установить сам драйвер, вроде так?
А что значит использовать DBI вместе с драйвером?

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

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

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

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

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

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


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