![]() |
|
![]() ![]() ![]() |
|
BaLaBaXa |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 29 Регистрация: 7.5.2006 Репутация: нет Всего: нет |
Здравствуйте!
Я создал некую БД в MS SQL Server 2005 и несколько пользователей с определёнными привилегиями на эту БД. Написал клиентское приложение на Delphi, связанное с этой базой через ADO компоненты. После запуска этого приложения выскакивает форма с полями для логина и пароля и кнопкой. Какой код в методе Click данной кнопки необходимо мне прописать, чтобы данные с полей сравнивались с данными о пользователях на сервере и в случае успешной аутентификации произошёл вход в клиентское приложение. И какие при этом компоненты необходимо использовать? P.S.: Ничего толкового в поиске не нашёл по этому поводу. |
|||
|
||||
ТоляМБА |
|
||||||
![]() Котэ ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1607 Регистрация: 15.12.2004 Репутация: 3 Всего: 252 |
Нижесказанное ИМХО:
|
||||||
|
|||||||
BaLaBaXa |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 29 Регистрация: 7.5.2006 Репутация: нет Всего: нет |
Нет, я не это имею ввиду. Наоборот, я сам создаю форму, на которой, соответствующие поля и кнопка. Хочу, чтобы вход был по логину и паролю. ![]() Это конечно правильно. Но у меня не такая серьёзная работа. Я курсовую делаю, так что главное чтобы работало. ![]() |
|||
|
||||
Exai1e |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 908 Регистрация: 3.12.2006 Где: Moscow Репутация: нет Всего: 30 |
Юзер вводит логин пароль. Создаеш запрос к базе
если кол-во возвращенных записей не равно 0 то пускаеш, иначе не пускаеш ![]() p.s. это так примерно ![]() ![]() Это сообщение отредактировал(а) Exai1e - 22.12.2007, 14:20 -------------------- "Решение зависит от выбранного геморроя" © Snowy "у нас как в армии - либо работает, либо так и задумано" |
|||
|
||||
BaLaBaXa |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 29 Регистрация: 7.5.2006 Репутация: нет Всего: нет |
||||
|
||||
Anark1 |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 622 Регистрация: 15.12.2006 Где: RF -> Moscow Репутация: 1 Всего: 11 |
или
Это сообщение отредактировал(а) Anark1 - 22.12.2007, 19:22 |
||||
|
|||||
kobra |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 730 Регистрация: 15.6.2005 Где: Грузия, Тбилиси Репутация: 1 Всего: 9 |
рас задача состоит в том чтобы юзер конектился к базе по своему логину, метод предложенный Exai1e-ом не подоидет. так как чтобы запустить запрос, нужно быть уже залогиненним.
задача решается двумя способами: 1. включить LoginPrompt и система при конекте сама позаботится осталном. 2. сделать аналог первого варианта в ручную. для этого перед конектом на основе введеннои клиентом олгина и пароля составить строку соединения и передать его в соответствуишее своиство компонента, который обеспечивает соедение и открыть соеденение. |
|||
|
||||
Anark1 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 622 Регистрация: 15.12.2006 Где: RF -> Moscow Репутация: 1 Всего: 11 |
kobra, прав только в том случае если речь идет об юзерах на уровне сервера. А если имеем дело с юзерами представленными в бд записями, то Exai1e прав. Соответственно мой пост выше относится ко второму случаю.
|
|||
|
||||
BaLaBaXa |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 29 Регистрация: 7.5.2006 Репутация: нет Всего: нет |
Нет, у меня LoginPrompt специально отключено...так как использую Windows-аутентификацию. Нет необходимости каждый раз вводить имя и пароль для доступа к серверу. В смысле "с юзерами представленными в бд записями"? У меня юзеры создаются в разделе Security/Logins на сервере и у каждого свои привилегии на определённые БД. Точнее моё приложение работает только с одной БД. Как тогда мне лучше в этом случае сделать авторизацию? По способу, что предложил kobra или Exai1e и Anark1? Добавлено через 8 минут Попробовал включить LoginPrompt! Теперь коннектится при абсолютно любых логинах и паролях! ![]() ![]() |
|||
|
||||
Anark1 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 622 Регистрация: 15.12.2006 Где: RF -> Moscow Репутация: 1 Всего: 11 |
BaLaBaXa, каким образом ты будешь выполнять запросы к системным таблицам ? Я думал у тебя пользователи представлены в виде записей некоторой таблицы. Естественно, так как у тебя придется формировать строку подключения. Под каждого юзера+првиелегию своя строка будет получаться.
|
|||
|
||||
BaLaBaXa |
|
||||
![]() Новичок Профиль Группа: Участник Сообщений: 29 Регистрация: 7.5.2006 Репутация: нет Всего: нет |
После запуска приложения коннект к серверу проиходит автоматически (LoginPrompt отключен), а уже после этого на форме, где поля для логина и пароля, по нажатию кнопки делать запросы. Или это не получится?
А что тут подразумевается под Users? Типа моя собственная таблица с юзерами? У меня её нет...и заводить не хочу. Все юзеры созданы на сервере. Как же быть? ![]() |
||||
|
|||||
kobra |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 730 Регистрация: 15.6.2005 Где: Грузия, Тбилиси Репутация: 1 Всего: 9 |
есть два варианта авторизации
1. по винде так как у тебя авторизация по винде, подклучатся будеш в лубом случае. так как сервер смотрит какои юзер логинится по учетнои записи винды. в таком случае не нужно вводить не логин не парол. веть юзер это уже сделал при входе в винду. 2. по учетке на сервере. вот в этом случае нужно вводить логин и парол. |
|||
|
||||
BaLaBaXa |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 29 Регистрация: 7.5.2006 Репутация: нет Всего: нет |
kobra, я это всё прекрасно знаю!
![]() Ещё раз опишу проблему...подробно. У меня стоит MS SQL Server. Вход в него происходит посредством Windows-аутентификации. На сервере есть БД и 3 созданных мною юзера с определёнными привилегиями на эту БД. Также есть клиентское приложение, работающее только с этой БД. У ADOConnection1 свойство LoginPromрt равно False...чтобы не выскакивало каждый раз окошко для ввода логина и пароля. Я хочу, чтобы после запуска этого приложения сначала надо было авторизоваться, чтобы работать в нём. Причём авторизоваться по логину и паролю тех 3-х пользователей, что создал на сервере (которые хранятся в: "Имя сервера"/Security/Logins...ну или в: ("Имя сервера"/Databases/"Имя базы"/Security/Users). Т.е. хранятся не в созданной мною специальной таблице с юзерами. Как же всё-таки это мне сделать? Ничего не получается... :( |
|||
|
||||
Anark1 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 622 Регистрация: 15.12.2006 Где: RF -> Moscow Репутация: 1 Всего: 11 |
BaLaBaXa, во первых. Тогда не понятно зачем LoginPrompt = false. Пусть бы юзер сам вводил свои логин и пароль.
Второе. Можно делать это всё вручную (не знаю зачем, но вдруг). Вручную формируется свойство TADOConnection->ConnectionString.
Соответственно USER ID и Password можно брать из эдитов. Это сообщение отредактировал(а) Anark1 - 24.12.2007, 17:00 |
|||
|
||||
BaLaBaXa |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 29 Регистрация: 7.5.2006 Репутация: нет Всего: нет |
Потому что, когда оно True, можно войти в прогу с любым логином и паролем. Даже которых в принципе не существует. Ещё раз. Изначально может ошибка? В свойстве ADOConnection1 настроил свойства: ConnectionString => нажал кнопку Build, выбрал Поставщика данных - Microsoft OLE DB Provider for SQL Server. Затем выбрал имя сервера. Для входа в сервер я использовал: "учетные сведения Windows NT", была ещё строка для выбора: "следующие имя и пароль пользователя", но тогда вход был бы всегда только по этим логину и паролю...а мне нужно всегда под разными заходить. LoginPrompt = False, Connected = True. Что не так? Неужели это такая сложная проблема, что мы не можем никак в ней разобраться? ![]() |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Delphi: Базы данных и репортинг" | |
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами Обязательно указание: 1. Базы данных (Paradox, Oracle и т.п.) 2. Способа доступа (ADO, BDE и т.д.)
FAQ раздела лежит здесь! Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |