Модераторы: Akella
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> FBierd 2.0 смена логина и пароля, ... "молодой" хочет разобраться 
:(
    Опции темы
sith
Дата 18.10.2007, 09:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 537
Регистрация: 11.2.2007

Репутация: нет
Всего: 1



... вообщем то хочу разобраться в таком деле...

... я делаю базы данных в IBExpert... есть ли у него такая функция по смене логина и пароля... или нужно всеравно консольно использовать gsec

... и хотелось бы понять...
SYSDBA
masterkey
это логин пароль БД или самого СУБД...?

... и как мне сделать пароль и логин непосредственно на базуданных... ?


--------------------
Там где ты ставишь глупые смайлики, я вбиваю восклицания знаки!!!
PM MAIL   Вверх
Anark1
Дата 18.10.2007, 10:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 622
Регистрация: 15.12.2006
Где: RF -> Moscow

Репутация: нет
Всего: 11



sith, 
1. С IBExpert не работал, но думаю можно.
2. SYSDBA - зарезервированное имя, masterkey - пароль по умолчанию. Пароль ставится не на БД, а на сервер. То есть для всех БД, обслуживаемых одним сервером сохраняется один и тот же список пользователей.
3. Непосредственно на БД нужно писать самому. Создаешь таблицу USERS, в ней LOGIN, PASS. И вручную обрабатываешь соединение.


--------------------
Enjoy yourself, still you can...;)

user posted image

user posted image
PM MAIL ICQ   Вверх
sith
Дата 18.10.2007, 21:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 537
Регистрация: 11.2.2007

Репутация: нет
Всего: 1



3. Непосредственно на БД нужно писать самому. Создаешь таблицу USERS, в ней LOGIN, PASS. И вручную обрабатываешь соединение.


... а как это делаеться...?

Это сообщение отредактировал(а) sith - 18.10.2007, 21:31


--------------------
Там где ты ставишь глупые смайлики, я вбиваю восклицания знаки!!!
PM MAIL   Вверх
Anark1
Дата 18.10.2007, 21:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 622
Регистрация: 15.12.2006
Где: RF -> Moscow

Репутация: нет
Всего: 11



Код

CREATE TABLE USERS (
  ID    INTEGER NOT NULL,
  LOGIN VARCHAR(30),
  PASS  VARCHAR(30),
  RID   INTEGER NOT NULL
);

SQL запрос создающий таблицу. Скопировал кусок из проекта, для твоей задачи поле RID, думаю не обязательно.
Дальше на приложении клиенте две поля - для логина и пароля. И кнопочку коннект. Обработчик события OnClick этой кнопки может выглядеть например так :
Код

void __fastcall TLogin::bttnConnectClick(TObject *Sender)
{
int rcount;
AnsiString pw_text, login_text, SQL_str, role_str, dept_name;
if (edit_login->Text.Length() != 0 )
        {
        if (edit_pw->Text.Length() !=0 )
        {
        Main->IBDatabase1->Params->Append("user_name=ESTAB");
        Main->IBDatabase1->Params->Append("password=estab");
        Main->IBDatabase1->Params->Append("sql_role_name="+ROLE);
        Main->IBDatabase1->Params->Append("lc_ctype=WIN1251");
        Main->IBDatabase1->Connected = true;
        Main->IBLogin->SelectSQL->Clear();
        SQL_str = "SELECT count (*) AS rcount FROM USERS WHERE (LOGIN='";
        pw_text = edit_pw->Text;
        login_text = edit_login->Text;
        SQL_str = SQL_str + login_text + "') AND (PASS = '" + pw_text + "')";
        Main->IBLogin->SelectSQL->Add(SQL_str);
        Main->IBLogin->Open();
        rcount = Main->IBLogin->FieldByName("rcount")->AsInteger;
        if (rcount == 0)
        {
                ShowMessage("Error, user not found");
                Main->IBDatabase1->Connected = false;
        }
        else
        { 
         // запуск некоторой формы для пользователя, успешно прошедшего проверку.
         }

Код C++ Builder \ InterBase \ InterBase Express
Я ответил на вопрос ?


--------------------
Enjoy yourself, still you can...;)

user posted image

user posted image
PM MAIL ICQ   Вверх
sith
Дата 18.10.2007, 23:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 537
Регистрация: 11.2.2007

Репутация: нет
Всего: 1



ну почти... если бы ты написал код на Java:)
... может просто алгоритм опишешь... по подробнее...?


--------------------
Там где ты ставишь глупые смайлики, я вбиваю восклицания знаки!!!
PM MAIL   Вверх
Anark1
Дата 19.10.2007, 20:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 622
Регистрация: 15.12.2006
Где: RF -> Moscow

Репутация: нет
Всего: 11



sith, интересный ты человек  smile обычно когда говорят алгоритм, просят привести пример кода. Ты наоборот.
на Java, к сожалению, не пишу.
Могу описать алгоритм. Идея заключается в том, чтобы найти запись с данными логином и паролем.
1. Формируем строку запроса вида 
Код

SELECT count (*) AS rcount FROM USERS WHERE (LOGIN = 'IVANOV') AND (PASS = '123')

2. В поле rcount нам вернется количество записей. При этом поля Login и Pass должны быть основой для уникального составного индекса. Это для того, чтобы связка логин+пароль не повторялась.
3. Таким образом значение поля может быть 1 - если такой пользователь есть. И 0 - если таких пользователей нет.
4. А затем соответственно выполняется дальнейшая часть кода, или выкидывается сообщение типа "User not found".


--------------------
Enjoy yourself, still you can...;)

user posted image

user posted image
PM MAIL ICQ   Вверх
sith
Дата 19.10.2007, 22:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 537
Регистрация: 11.2.2007

Репутация: нет
Всего: 1



... фух... сложновато... но в любом случае... все это дело не прописываеться в мета данные самой базы данных... я в своем коде делаю все эти проверки и установки... то есть... любой пользователь может написать свой код и работать с моей базой данных как того возжелает...? или не так?


--------------------
Там где ты ставишь глупые смайлики, я вбиваю восклицания знаки!!!
PM MAIL   Вверх
Anark1
Дата 20.10.2007, 14:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 622
Регистрация: 15.12.2006
Где: RF -> Moscow

Репутация: нет
Всего: 11



sith, любой пользователь, который знает связку login - password для сервера может выполнять все разрешенные данному аккаунту операции над твоей БД. По этому то и следует меня пароль для SYSDBA. 
Я ответил, как мне кажется, довольно полно. Все вроде бы понятно написал. Если даже тут возникают вопросы, то стоит что нибудь почитать.
И ничего сложного в этом нет.
Если создается многопользовательское приложение, содержащее очень много пользователей, при этом каждый пользователь имеет свои уникальные настройки, то целесообразно хранить пользователей именно в таблице БД. 
Хотя с помощью средств InterBase Express, выполнив соединение под SYSDBA, можно добавлять удалять пользователей. Именно на уровне сервера, а не как запись в нашей таблице USERS.


--------------------
Enjoy yourself, still you can...;)

user posted image

user posted image
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Interbase"
Alex

Обязательно указание:

1. Версию InterBase (Firebird, Yaffil)

2. Способа доступа (ADO, BDE, IBX и т.д.)

  • КАК ПРАВИЛЬНО ОФОРМИТЬ КОД - ЗДЕСЬ
  • КАК ПРАВИЛЬНО УКАЗАТЬ ТЕКСТ ОШИБКИ - ЗДЕСЬ
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • FAQ раздела лежит здесь!

Если Вам понравилась атмосфера форума, заходите к нам чаще! С Уважением, Akella.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Firebird, Interbase | Следующая тема »


 




[ Время генерации скрипта: 0.0505 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.