Форум: "Начинающим";
Текущий архив: 2010.09.05;
Скачать: [xml.tar.bz2];
ВнизАвторизация Найти похожие ветки
← →
Cannon (2010-06-08 14:06) [0]Здравствуйте. Подскажите пожалуйста, как по правильному производить авторизацию в программе. Сейчас я делаю отдельную форму куда юзер вводит данные авторизации, под этими данными коннекчусь к БД, затем если соединение установлено, скрываю форму авторизации и запускаю главное окно. В некоторых случаях, когда ОС виснет, у меня форма авторизации не скрывается и запускается главное окно, редко но бывает. А как по правильному делать все это дело? Спасибо.
← →
pest © (2010-06-08 14:23) [1]я бы не стал использовать авторизационные данные БД для разграничения доступа к ПО.
храни в базе все логины и пароли.
сначала конекться под программным паролем, дай пользователю ввести логин и пароль, посмотри в базе и проверь можно ли юзера впускать. если можно, то переконнекться под нужными авт.данными.
что-то типа этого:frmAuth.ShowModal;
if frmAuth.ModalResult <> mrOk then Close;
← →
Медвежонок Пятачок © (2010-06-08 14:25) [2]Создаем главную форму.
в ОнКриэейт посылаем себе пользовательское сообщение.
в обработчике создаем модальную форму входа.
при ее закрытии если mrOk получаем данные введенные юзером.
подключаемся. если все ок, то все ок.
если нет, то нет. повторяем.
← →
Dennis I. Komarov © (2010-06-08 14:29) [3]
> храни в базе все логины и пароли.
"Ага, и маму в дом. Только мамы нам там и не хватало" (C)
← →
pest © (2010-06-08 14:32) [4]2Dennis I. Komarov
сарказм непонятен
← →
Dennis I. Komarov © (2010-06-08 14:37) [5]Хранить пароли - недопустимо. Для этого специальные необратимые функции придумали.
← →
pest © (2010-06-08 14:42) [6]я вообще паролями к базе не разбрасываюсь.
я бы создал один пароль к бд, создал бы в бд таблицу с юзерами (логин, пароль, id и тд).
во всех таблицах, которые используют юзеры добавил бы колонку с userid.
и при пользовании того или иного пользователя программой делал бы WHERE userid=CurenUserID.
а таблица с пользователями никому не доступна из программы.
мы не знаем какой сложности и серьезности должна быть программа. в большинстве случаев хранить пароли в базе в недоступной для всех таблице это нормально. иначе где ему их еще хнранить? плюс если страшно есть функции хеширования.Self пароли можно в хэше держать.
← →
Anatoly Podgoretsky © (2010-06-08 14:42) [7]> Cannon (08.06.2010 14:06:00) [0]
Цель (задача) какая? Или ты думаешь, что есть волшебная таблетка?
← →
Dennis I. Komarov © (2010-06-08 14:44) [8]
> пароли можно в хэше держать
Не можно, а нужно.
← →
Anatoly Podgoretsky © (2010-06-08 14:45) [9]
> pest © (08.06.10 14:42) [6]
Велочсипедостроитель.
← →
pest © (2010-06-08 14:46) [10]2Anatoly Podgoretsky
при ответе на сарказм одного пользователя, получил от другого...
← →
программер (2010-06-08 14:49) [11]запустить скрытой главную форму, создать авторизационную форму, при валидности данных уничтожить авторизационную форму и сделать видимой главную форму.
← →
Dennis I. Komarov © (2010-06-08 14:50) [12]
> Anatoly Podgoretsky © (08.06.10 14:45) [9]
Это не велочсипед, это что-то более страшное...
> pest © (08.06.10 14:42) [6]
> во всех таблицах, которые используют юзеры добавил бы колонку
> с userid.
Это как же надо исковеркать БД
← →
pest © (2010-06-08 14:50) [13]да и велосипед, рас я его повторно изобрел, был предназначен не для тех, кто о нем уже давно знает, а для тех, у кого вызывает затруднения
> А как по правильному делать все это дело?
← →
pest © (2010-06-08 14:53) [14]
> Это как же надо исковеркать БД
еще раз повторюсь, что нам не известно что делает программа. может там всего одна таблица в базе, тогда userid не помешает никак. а может там стоит создавать под каждого юзера свою БД. а может под каждого юзера таблицы с префиксами свои...
о каком коверкании может идти речь, если даже структура не известа
← →
Cannon (2010-06-08 14:54) [15]Всем спасибо. Решил сделать как посоветовал Медвежонок Пятачок.
> Цель (задача) какая? Или ты думаешь, что есть волшебная
> таблетка?
Я же написал цель. За меня ничего писать не надо, и таблеток волшебных не нужно. Да и пишу я на другом языке а не в Delphi. Мне нужно узнать как авторизацию лучше всего организовать, от более опытных людей.
← →
Dennis I. Komarov © (2010-06-08 14:57) [16]
> может там всего одна таблица в базе, тогда userid не помешает
> никак. а может там стоит создавать под каждого юзера свою
> БД. а может под каждого юзера таблицы с префиксами свои.
> ..
Бред, не зависимо от функций программы.
> о каком коверкании может идти речь, если даже структура
> не известа
Даже пусть одна таблица и что?
← →
Anatoly Podgoretsky © (2010-06-08 14:58) [17]> pest (08.06.2010 14:53:14) [14]
Тебе неизвестно, но тем не менее говоришь, так как будто известно и
предлагаешь извращение.
← →
Anatoly Podgoretsky © (2010-06-08 15:00) [18]Пишешь на другом языке, а совет по Дельфи.
← →
Dennis I. Komarov © (2010-06-08 15:00) [19]
> Cannon (08.06.10 14:54) [15]
Если нет трехзвенной архитектуры, используй средства СУБД.
← →
Медвежонок Пятачок © (2010-06-08 15:00) [20]один технологический логин к серверу + система логинов и ролей в БД это не извращение. Это один из возможных способов разграничения доступа.
← →
pest © (2010-06-08 15:01) [21]
> Даже пусть одна таблица и что?
неужели с логикой все так сложно??
если речь идет об ограничении доступа к программе пользователей, которые будут использовать одни и те же данные, то никакие userid не нужны конечно. а если у каждого пользователя буду в БД свои данные, и дргие пользователя не должны иметь доступ к ним, то userid как раз в тему. особенно если там всего одна таблица и добавлять колонку не придется к сотням таблиц.
← →
Медвежонок Пятачок © (2010-06-08 15:03) [22]Если нет трехзвенной архитектуры, используй средства СУБД.
Напиши такую программу а затем поставь в какое нибудь ООО/ИЧП
Затем рассказывай им про создание ролей, групп и раздачу грантов.
А из ит специалистов там студент приходящий раз в месяц да тетушка - специалист по косынке.
Всесь энтузазизм и запал сразу потухнет.
← →
Dennis I. Komarov © (2010-06-08 15:03) [23]
> Медвежонок Пятачок © (08.06.10 15:00) [20]
[6] еще раз... :)
← →
pest © (2010-06-08 15:05) [24]
> Тебе неизвестно, но тем не менее говоришь, так как будто
> известно и предлагаешь извращение.
сходя из того, что понял из первого поста, попытался помочь человеку, а не начал опускать советы других. я кучу программ написал с разграничением доступа. и имея более точную инфу могу дать более полезный совет
← →
Медвежонок Пятачок © (2010-06-08 15:05) [25]ага [6]. и еще раз [22]
← →
Cannon (2010-06-08 15:06) [26]
> один технологический логин к серверу + система логинов и
> ролей в БД это не извращение. Это один из возможных способов
> разграничения доступа.
Теперь такой вопрос. Если у кого-то сессия зависнет, не будет ли это помехой для других пользователей которые коннектятся под тем же пользователем в БД?
> Если нет трехзвенной архитектуры, используй средства СУБД.
>
меня 2хзвенная архитектура. Можно по подробнее, какие средства СУБД?
> Пишешь на другом языке, а совет по Дельфи.
Потому, что люблю этот форум со времен изучения Delphi)
← →
Медвежонок Пятачок © (2010-06-08 15:09) [27]Теперь такой вопрос. Если у кого-то сессия зависнет, не будет ли это помехой для других пользователей которые коннектятся под тем же пользователем в БД?
Сессий много и они разные.
← →
pest © (2010-06-08 15:10) [28]
> Теперь такой вопрос. Если у кого-то сессия зависнет, не
> будет ли это помехой для других пользователей которые коннектятся
> под тем же пользователем в БД?
абсолютно нет никакой проблемы, потому что коннект к базе все пользователи делают под одними авторизационными данными, а читают из базы исходя из условия WHERE
← →
Dennis I. Komarov © (2010-06-08 15:10) [29]
> Медвежонок Пятачок © (08.06.10 15:05) [25]
И чего? В каждую таблицу добавим поле UID, так? Что-то мне это не так представляется...
← →
Медвежонок Пятачок © (2010-06-08 15:13) [30]И чего? В каждую таблицу добавим поле UID, так? Что-то мне это не так представляется...
я не про эти частности говорил. нет у меня никаких ид.
я говорил про два подхода в системе разграничения доступа
1. "правильная", но часто неприменимая практически - все со своими sql аккаунтами
2. "неправильная", но часто единственно работоспособная. - программа использует технический аккаунт, а юзеры используют логические логины из прикладного справочника.
← →
pest © (2010-06-08 15:13) [31]
> Dennis I. Komarov © (08.06.10 15:10) [29]
напиши программу, в которой скажем нужно разграничивать доступ между начальством, секретарями, исполнительным отделом, рабочими и тд. и как ты в таком случаее обойдешься без ролей в таблице данных? аналог (UID)
← →
Anatoly Podgoretsky © (2010-06-08 15:18) [32]> Cannon (08.06.2010 15:06:26) [26]
А это зависит от того, какая у тебя СУБД, лучше если она позволяет делать
Windows аутентификацию.
← →
Anatoly Podgoretsky © (2010-06-08 15:20) [33]> Медвежонок Пятачок (08.06.2010 15:13:30) [30]
В вопросе нет ничего про разграничение доступа, а только про логин.
← →
Dennis I. Komarov © (2010-06-08 15:21) [34]
> Медвежонок Пятачок © (08.06.10 15:13) [30]
А я про [6] :)
> pest © (08.06.10 15:13) [31]
Доступ к чему? Вряд ли это будут таблицы, ибо юзеры юзуют GUI...
← →
Anatoly Podgoretsky © (2010-06-08 15:22) [35]> pest (08.06.2010 15:13:31) [31]
Не обойдусь, а буду использовать заранее заготовленые, на системном уровне
роли, и управлять этим буду из программы, по весьма простому интерфейсу,
выбор из справочника и плюс еще к этому бизнес правила.
← →
pest © (2010-06-08 15:30) [36]
> Доступ к чему? Вряд ли это будут таблицы, ибо юзеры юзуют
> GUI...
а GUI данные откуда получает для каждого конкретного пользователя? из БД. а в БД таблицы с данными. а не все данные можно просматривать простому "рабочему", в то вреся как директору можно все...
а загружать все данные в программу и потом уже делать выборку кому показывать а кому не, это как минимум глупо
> Anatoly Podgoretsky © (08.06.10 15:22) [35]
выбор из справочника и плюс еще к этому бизнес правила
это что еще?
← →
Anatoly Podgoretsky © (2010-06-08 15:35) [37]А это то, что у тебя "не все данные можно просматривать простому", то что правами на таблицы не реализуются, поскольку это не роли, а бизнес правила, при том они могут быть хитрее, чем "простому", например смотреть свои я могу, чужие нет, или мне можно деньги видеть, тебе нет. Или по условию.
← →
Dennis I. Komarov © (2010-06-08 15:35) [38]
> pest © (08.06.10 15:30) [36]
Данные загружаются, после определенного действия, разрешение на которые и нужно проверять. То что предлагаете Вы больше напоминает фальсификацию данных - для одного юзера данные одни, а для другого...
← →
Anatoly Podgoretsky © (2010-06-08 15:40) [39]
> Здравствуйте. Подскажите пожалуйста, как по правильному
> производить авторизацию в программе. Сейчас я делаю отдельную
> форму куда юзер вводит данные авторизации, под этими данными
> коннекчусь к БД
Ты говоришь не об авторизации и естесвенно путаешь других, ты спрашиваешь про аутентификацию, а тебе пытаются рассказать про авторизацию.
← →
Sergey13 © (2010-06-08 15:45) [40]Почти 40 постов, а СУБД так вроде и остается пока неизвестной.
Страницы: 1 2 вся ветка
Форум: "Начинающим";
Текущий архив: 2010.09.05;
Скачать: [xml.tar.bz2];
Память: 0.55 MB
Время: 0.009 c