Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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.56 MB
Время: 0.004 c
15-1276185441
da4
2010-06-10 19:57
2010.09.05
Кто сильнее, Тигр Лев или Медведь?


15-1276340850
NailMan
2010-06-12 15:07
2010.09.05
А никто в качестве хобби аэрографией не занимается?


2-1274189147
Jacksotnik
2010-05-18 17:25
2010.09.05
Запись дробного числа в базу MySQL


4-1239652712
Unlocker
2009-04-13 23:58
2010.09.05
Запуск под админом


15-1276349218
HRustBB
2010-06-12 17:26
2010.09.05
здесь любой может писать от моего имени?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский