|
Модуль авторизации. Тестирование и обсуждение
|
|||
---|---|---|---|
#18+
JossВот последнюю ситуацию я ещё не сообразил, как избежать. Но думаю над этим. У тебя на каждое движение постоянно идёт выборка из базы, поэтому и ошибка выскакивает. Если взять пример реализации из операционной системы, то залогиненный юзер будет админом даже тогда когда у него отобрали права админа. Он перестанет быть админом только после того как выйдет и зайдёт заново. То есть, тебе не нужно каждый раз делать выборку из базы, а просто завести некую переменную, которой присваивать соответствующее значение (админ, юзер) при входе юзера. И все остальные проверки делать уже на основе этой переменной, так и базу меньше будешь дёргать и скорость работы программы повысится. :) ... |
|||
:
Нравится:
Не нравится:
|
|||
19.12.2018, 15:48 |
|
Модуль авторизации. Тестирование и обсуждение
|
|||
---|---|---|---|
#18+
Я бы реализацию делал бы немного иначе. Завёл-бы одну таблицу на всех юзеров. Если база нулевая, то появляется окошко регистрации админа и человек вводит нужный логин и ФИО, таким образом первый юзер всегда сначала админ, этим мы избавляемся от попыток подключения к базе под заранее известным логином. После чего показываем человеку окно логина, он вводит только-что введённый логин, после чего его статус пишется в TempVars-переменную и по ней мы уже проверяем его доступ. Так-же в TempVars записываем кол-во админов и уменьшаем это число каждый раз, когда у очередного юзера убирают галочку "Админ" (увеличиваем, если добавляют галочку). А если переменная кол-ва админов содержит только единицу, то делаем поле "Админ/не админ" заблокированным. Можно в таблицу "Юзеры" ручками занести логин "админ" и исключить код добавления юзера на стадии первого подключения к нулевой базе. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.12.2018, 16:02 |
|
Модуль авторизации. Тестирование и обсуждение
|
|||
---|---|---|---|
#18+
Stanislav P...Я бы реализацию делал бы немного иначе. Завёл-бы одну таблицу на всех юзеров. Если база нулевая, то появляется окошко регистрации админа и человек вводит нужный логин и ФИО... Я вот тоже об этом при первом скачивании БД для тестирования подумал. Но посчитав, что я начал зрить пример не вникнув в суть вопроса, то стал смотреть с самого первого поста и примера, а соответственно заметил, что дабы каждый раз логин и пароль не вводить, ради сути, то сама форма авторизации временно была как бы отодвинута в сторону и обозначеноа главная задачка. Или я в чём то не прав и самое главное как всегда упустил? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.12.2018, 16:45 |
|
Модуль авторизации. Тестирование и обсуждение
|
|||
---|---|---|---|
#18+
Блин блинский. Хотел тоже показать как я в своих тщетных попытках хотел нечто подобное сделать, а оно из за размера как всегда не приложилось. Интересно из за чего? Наверное я какой ни то типа - Максималист. и не обращаю внимание на размах. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.12.2018, 16:53 |
|
Модуль авторизации. Тестирование и обсуждение
|
|||
---|---|---|---|
#18+
Для своего проекта я делаю почти так, как выше описал. За исключением того, что у меня нет поля "Админ", у меня всё завязывается на RBAC-модели, а там надо хранить в памяти побольше данных и я ещё не придумал как это сделать красиво. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.12.2018, 20:18 |
|
Модуль авторизации. Тестирование и обсуждение
|
|||
---|---|---|---|
#18+
авторЕсли взять пример реализации из операционной системы, то залогиненный юзер будет админом даже тогда когда у него отобрали права админа. Он перестанет быть админом только после того как выйдет и зайдёт заново. То есть, тебе не нужно каждый раз делать выборку из базы, а просто завести некую переменную, которой присваивать соответствующее значение (админ, юзер) при входе юзера. И все остальные проверки делать уже на основе этой переменной, так и базу меньше будешь дёргать и скорость работы программы повысится. :) Если Вы обратили внимание, то в Module1 есть глобальные переменные Код: vbnet 1. 2.
Всё работает более-менее нормально, пока не начинают дёргать режимы авторизации. Есть ещё два или три узких места: если админ БД сам у себя отобрал админские привилегии и если он сам себя удалил из базы. Может действительно попробовать переписать как в системе? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.12.2018, 08:37 |
|
Модуль авторизации. Тестирование и обсуждение
|
|||
---|---|---|---|
#18+
Я бы сделал новый тип данных и при авторизации запихивал бы все данные текущего юзера в переменную нового типа. И все проверки свёл-бы к списку: Проверка на последнего админ (блокируем чекбокс "админ") Проверка на одинаковый логин Винды (можно просто сделать индексом) Проверка на одинаковый локальный логин (то же самое - индекс) Проверка на удаление самого себя (проверка при нажатии кнопки "удалить юзера") ... |
|||
:
Нравится:
Не нравится:
|
|||
20.12.2018, 10:51 |
|
Модуль авторизации. Тестирование и обсуждение
|
|||
---|---|---|---|
#18+
Stanislav P... Проверка на одинаковый логин Винды (можно просто сделать индексом) Проверка на одинаковый локальный логин (то же самое - индекс) ... Я так и хотел в начале, но не получается. Они могут быть пустыми ... |
|||
:
Нравится:
Не нравится:
|
|||
20.12.2018, 11:22 |
|
Модуль авторизации. Тестирование и обсуждение
|
|||
---|---|---|---|
#18+
Следующая версия. Пользователь и его привилегии определяются при входе в программу и действуют всю сессию. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.12.2018, 14:40 |
|
Модуль авторизации. Тестирование и обсуждение
|
|||
---|---|---|---|
#18+
JossЯ так и хотел в начале, но не получается. Они могут быть пустыми Если есть система авторизации, то логин должен быть обязательно. В винду, да в любую ОС не зайдёшь без логина. То есть, у юзера должен быть, как минимум, один из двух логинов. То есть, при создании нового юзера нельзя выйти из формы, пока не будет вбит один из двух логинов. У тебя всего семь возможных вариантов сочетания юзеров и админов. Всё это легко укладывается в тройку IF, или один SELECT CASE. Можно свой ENUM сделать и при входе присваивать переменной "ТекущийСеанс" значение из enum и затем пропускать через CASE. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.12.2018, 15:48 |
|
Модуль авторизации. Тестирование и обсуждение
|
|||
---|---|---|---|
#18+
В ОС всегда есть юзер - Гость, под ним авторизуются анонимы, в твоём случае его можно даже не заводить в таблицы. Можно создать новый Enum "Тип Юзера" и три значения: админ, юзер, гость. И исходя из текущего типа юзера, и выбранного режима авторизации, показывать окно для ввода пароля встроенного админ (когда в выбранном варианте авторизации нет админов), либо блокировать доступ (есть другие админы у текущей авторизации), разрешать доступ если вошедший юзер админ в этой авторизации. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.12.2018, 15:58 |
|
Модуль авторизации. Тестирование и обсуждение
|
|||
---|---|---|---|
#18+
Stanislav PJossЯ так и хотел в начале, но не получается. Они могут быть пустыми Если есть система авторизации, то логин должен быть обязательно. В винду, да в любую ОС не зайдёшь без логина. То есть, у юзера должен быть, как минимум, один из двух логинов. То есть, при создании нового юзера нельзя выйти из формы, пока не будет вбит один из двух логинов. так и сделано. попробуйте создать пользователя без логина. Stanislav PУ тебя всего семь возможных вариантов сочетания юзеров и админов. Всё это легко укладывается в тройку IF, или один SELECT CASE. Можно свой ENUM сделать и при входе присваивать переменной "ТекущийСеанс" значение из enum и затем пропускать через CASE. Ничего не понял. Какие сочетания? Есть пользователь. Он может быть админом. А может и не быть. Всё. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.12.2018, 16:11 |
|
Модуль авторизации. Тестирование и обсуждение
|
|||
---|---|---|---|
#18+
Stanislav PВ ОС всегда есть юзер - Гость, под ним авторизуются анонимы, в твоём случае его можно даже не заводить в таблицы. Не есть, а предусмотрен. У нас на предприятии, да и у меня дома он отключен. Stanislav PМожно создать новый Enum "Тип Юзера" и три значения: админ, юзер, гость. И исходя из текущего типа юзера, и выбранного режима авторизации, показывать окно для ввода пароля встроенного админ (когда в выбранном варианте авторизации нет админов), либо блокировать доступ (есть другие админы у текущей авторизации), разрешать доступ если вошедший юзер админ в этой авторизации. Не плодите сущности сверх необходимости. Зачем всё это? Программа может быть без авторизации . Такую программу обычно ставят у себя на компьютере, где работает только один человек. Других пользователей не предусмотрено. Программа может быть с Windows авторизацией. Как у меня на работе. Домен, выделенный сервер, строгие права. При входе авторизовался, зачем дёргаться ещё раз при входе в программу? Программа может иметь авторизацию Login/Password . Это для персональных компьютеров коллективного пользования. Когда нет системщика, никто не заводит логины для каждого пользователя. И вообще возможно нет сети. Какая-нибудь малая организация. Пришел, включил компьютер, начал работать. Пришел сменщик. Встал, не выключая компьютер, пошел домой. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.12.2018, 16:25 |
|
Модуль авторизации. Тестирование и обсуждение
|
|||
---|---|---|---|
#18+
Joss, ну все таки это не windows авторизация.... Можно добавить авторизации по логину паролю с источником из AD по ldap протоколу. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.12.2018, 16:45 |
|
Модуль авторизации. Тестирование и обсуждение
|
|||
---|---|---|---|
#18+
Что-то я в терминологии запутался... А можно разъяснить подробнее? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.12.2018, 22:04 |
|
Модуль авторизации. Тестирование и обсуждение
|
|||
---|---|---|---|
#18+
Небольшое исправление. Предусмотрел флажок "Действующий" в параметрах сотрудника, но забыл включить его контроль. Исправился. Теперь в программу могут войти только действующие сотрудники. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.12.2018, 08:38 |
|
Модуль авторизации. Тестирование и обсуждение
|
|||
---|---|---|---|
#18+
JossЧто-то я в терминологии запутался... А можно разъяснить подробнее? В операционных системах есть два типа авторизации: 1. Локальная, когда запись о пользователе храниться на этом конкретном компьютере. 2. Централизованная, когда запись о пользователе хранится в некоей системе. Если сравнивать с твоей программой, то вариант "логин/пароль" может брать информацию о юзере не только из локальной таблицы юзеров, но и из прилинкованной, которая централизованно хранится в БД где-то на сервере и все копии твоей программы обращаются к этой таблице. LDAP, по сути - БД, для работы с ней нужна только строка подключения. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.12.2018, 09:26 |
|
Модуль авторизации. Тестирование и обсуждение
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
21.12.2018, 10:54 |
|
Модуль авторизации. Тестирование и обсуждение
|
|||
---|---|---|---|
#18+
Лапух Joss, А откуда, при открытии БД, Оно знает, что меня нет в списке пользователей? А Оно делает фото через Web камеру, сверяется со списками Интерпола, для надёжности ещё берёт отпечатки пальцев и фото сетчатки глаза... (шутка) Сверяется с таблицей пользователей tbl_Users ... Ну хорошо, после открытия БД... Если это определение для Вас так важно. Перед допуском к интерфейсу задачи. Такое определение Вас устроит, Вини? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.12.2018, 11:22 |
|
Модуль авторизации. Тестирование и обсуждение
|
|||
---|---|---|---|
#18+
Stanislav PJossЧто-то я в терминологии запутался... А можно разъяснить подробнее? В операционных системах есть два типа авторизации: 1. Локальная, когда запись о пользователе храниться на этом конкретном компьютере. 2. Централизованная, когда запись о пользователе хранится в некоей системе. Если сравнивать с твоей программой, то вариант "логин/пароль" может брать информацию о юзере не только из локальной таблицы юзеров, но и из прилинкованной, которая централизованно хранится в БД где-то на сервере и все копии твоей программы обращаются к этой таблице. LDAP, по сути - БД, для работы с ней нужна только строка подключения. Я там расписывал, что для сетевой работы с доменом должна использоваться Windows авторизация, а при работе на локальном компьютере - Login/Password ... |
|||
:
Нравится:
Не нравится:
|
|||
21.12.2018, 11:27 |
|
Модуль авторизации. Тестирование и обсуждение
|
|||
---|---|---|---|
#18+
JossЯ там расписывал, что для сетевой работы с доменом должна использоваться Windows авторизация, а при работе на локальном компьютере - Login/Password :) В Винде, которая в AD-домене можно зайти на локальный компьютер с локальным логином userA или зайти в домен с логином userA, но это абсолютно два разных юзера, хотя у них совпадает логин и может полностью совпадать ФИО. То есть, на компьютере с именем Comp001 , есть вариант входа Comp001\User1 и вариант Domen\User1 Если рассматривать форму авторизации в отрыве от остальной безопасности в программе, то эти логины равнозначные, если же рассматривать в комплексе, то это нарушение безопасности. Озверин тебе сказал, что по логин/паролю так-же можно авторизовываться в LDAP, то есть, это тоже windows-авторизация, но не совсем стандартным путём. Но на это можно забить. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.12.2018, 12:34 |
|
Модуль авторизации. Тестирование и обсуждение
|
|||
---|---|---|---|
#18+
Joss, Я так и знал, что везде шпиены. и за нами все следят. И ваще я не Вини, а Лапух. Да спасибо, попытаюсь проникнуть в нутрь сути конкретного места, а то уж очень много чего у вас там понаворочено. Да и кстати, когда открываю ваш пример, то так как у меня 2000-й и DAO приходится ручками подключать в референсах ручками, что не даёт ни чего сделать. пока не зайдешь с шифтом. Плюс приходится снимать галочку с библиотек более поздних версий. Не будет ли это проблемой для пользователей, у которых офис не такой как у вас? Ибо все равно же уберете возможность пользования шифтом в конце, да ещё и в mde наверное преобразуете. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.12.2018, 12:38 |
|
Модуль авторизации. Тестирование и обсуждение
|
|||
---|---|---|---|
#18+
Joss, В последней версии, если включить режим windows-авторизация и при этом либо отключить пользователя с админскими правами, либо забрать их у него, в дальнейшем нельзя никаким образом воспользоваться админскими привелегиями. То есть, придётся вызывать программиста, чтобы как-то проадминистрировать программу. Соответственно в двух других режимах этой проблемы нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.12.2018, 13:02 |
|
Модуль авторизации. Тестирование и обсуждение
|
|||
---|---|---|---|
#18+
Stanislav PJoss, В последней версии, если включить режим windows-авторизация и при этом либо отключить пользователя с админскими правами, либо забрать их у него, в дальнейшем нельзя никаким образом воспользоваться админскими привелегиями. То есть, придётся вызывать программиста, чтобы как-то проадминистрировать программу. Соответственно в двух других режимах этой проблемы нет. это я уже просёк и в ближайших версиях доработаю. Будет возможность простому пользователю из 2-го режима переключиться в 3 режим. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.12.2018, 13:37 |
|
Модуль авторизации. Тестирование и обсуждение
|
|||
---|---|---|---|
#18+
ЛапухJoss, Я так и знал, что везде шпиены. и за нами все следят. И ваще я не Вини, а Лапух. Да спасибо, попытаюсь проникнуть в нутрь сути конкретного места, а то уж очень много чего у вас там понаворочено. Да и кстати, когда открываю ваш пример, то так как у меня 2000-й и DAO приходится ручками подключать в референсах ручками, что не даёт ни чего сделать. пока не зайдешь с шифтом. Плюс приходится снимать галочку с библиотек более поздних версий. Не будет ли это проблемой для пользователей, у которых офис не такой как у вас? Ибо все равно же уберете возможность пользования шифтом в конце, да ещё и в mde наверное преобразуете. На счёт Вини. Просто вспомнилось Код: plaintext 1. 2.
У меня самая младшая версия на компе - 2003. Могу выкладывать в ней. Или в двух вариантах: под DAO и под ACE. Но я ещё и под Access 64 bit тестировал. Вот и не поменял. Кстати. У можно отдельно скачать провайдер ACE и поставить у себя не переустанавливая офис. Может сделаете? Будет проще с примерами. И ещё, настоятельно рекомендую поставить Office 2003 Portable. Выручал неоднократно. Никаких конфликтов с другими. Свободно работает в параллель с 64-х битными версиями офиса. Я начал с очень простого, если посмотрите с первого поста. Но меня стали критиковать за недоделанность, Я тогда сразу написал, что все замечания можно устранить, но код вырастет и потеряет наглядность. Так и вышло. Или режешь функциональность или мирись с увеличением объёма кода. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.12.2018, 13:54 |
|
|
start [/forum/topic.php?fid=45&msg=39751206&tid=1610485]: |
0ms |
get settings: |
8ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
68ms |
get topic data: |
9ms |
get forum data: |
3ms |
get page messages: |
51ms |
get tp. blocked users: |
1ms |
others: | 12ms |
total: | 170ms |
0 / 0 |