Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft Access Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 2 3 [4] 5 6 7   вперед  Ctrl      все
 Re: Модуль авторизации. Тестирование и обсуждение  [new]
Stanislav P
Member

Откуда: Сочи
Сообщений: 70
Joss
Вот последнюю ситуацию я ещё не сообразил, как избежать. Но думаю над этим.

У тебя на каждое движение постоянно идёт выборка из базы, поэтому и ошибка выскакивает.
Если взять пример реализации из операционной системы, то залогиненный юзер будет админом даже тогда когда у него отобрали права админа. Он перестанет быть админом только после того как выйдет и зайдёт заново.
То есть, тебе не нужно каждый раз делать выборку из базы, а просто завести некую переменную, которой присваивать соответствующее значение (админ, юзер) при входе юзера. И все остальные проверки делать уже на основе этой переменной, так и базу меньше будешь дёргать и скорость работы программы повысится. :)
19 дек 18, 15:48    [21768506]     Ответить | Цитировать Сообщить модератору
 Re: Модуль авторизации. Тестирование и обсуждение  [new]
Stanislav P
Member

Откуда: Сочи
Сообщений: 70
Я бы реализацию делал бы немного иначе. Завёл-бы одну таблицу на всех юзеров. Если база нулевая, то появляется окошко регистрации админа и человек вводит нужный логин и ФИО, таким образом первый юзер всегда сначала админ, этим мы избавляемся от попыток подключения к базе под заранее известным логином. После чего показываем человеку окно логина, он вводит только-что введённый логин, после чего его статус пишется в TempVars-переменную и по ней мы уже проверяем его доступ. Так-же в TempVars записываем кол-во админов и уменьшаем это число каждый раз, когда у очередного юзера убирают галочку "Админ" (увеличиваем, если добавляют галочку). А если переменная кол-ва админов содержит только единицу, то делаем поле "Админ/не админ" заблокированным.
Можно в таблицу "Юзеры" ручками занести логин "админ" и исключить код добавления юзера на стадии первого подключения к нулевой базе.
19 дек 18, 16:02    [21768528]     Ответить | Цитировать Сообщить модератору
 Re: Модуль авторизации. Тестирование и обсуждение  [new]
Лапух
Member

Откуда: Стойбище № 7
Сообщений: 865
Stanislav P
...Я бы реализацию делал бы немного иначе. Завёл-бы одну таблицу на всех юзеров. Если база нулевая, то появляется окошко регистрации админа и человек вводит нужный логин и ФИО...

Я вот тоже об этом при первом скачивании БД для тестирования подумал.
Но посчитав, что я начал зрить пример не вникнув в суть вопроса, то стал смотреть с самого первого поста и примера, а соответственно заметил, что дабы каждый раз логин и пароль не вводить, ради сути, то сама форма авторизации временно была как бы отодвинута в сторону и обозначеноа главная задачка.
Или я в чём то не прав и самое главное как всегда упустил?
19 дек 18, 16:45    [21768595]     Ответить | Цитировать Сообщить модератору
 Re: Модуль авторизации. Тестирование и обсуждение  [new]
Лапух
Member

Откуда: Стойбище № 7
Сообщений: 865
Блин блинский.
Хотел тоже показать как я в своих тщетных попытках хотел нечто подобное сделать, а оно из за размера как всегда не приложилось.
Интересно из за чего?
Наверное я какой ни то типа - Максималист. Картинка с другого сайта. и не обращаю внимание на размах. Картинка с другого сайта.
19 дек 18, 16:53    [21768608]     Ответить | Цитировать Сообщить модератору
 Re: Модуль авторизации. Тестирование и обсуждение  [new]
Stanislav P
Member

Откуда: Сочи
Сообщений: 70
Для своего проекта я делаю почти так, как выше описал. За исключением того, что у меня нет поля "Админ", у меня всё завязывается на RBAC-модели, а там надо хранить в памяти побольше данных и я ещё не придумал как это сделать красиво.
19 дек 18, 20:18    [21768855]     Ответить | Цитировать Сообщить модератору
 Re: Модуль авторизации. Тестирование и обсуждение  [new]
Joss
Member

Откуда: г. Минск
Сообщений: 4884
автор
Если взять пример реализации из операционной системы, то залогиненный юзер будет админом даже тогда когда у него отобрали права админа. Он перестанет быть админом только после того как выйдет и зайдёт заново.
То есть, тебе не нужно каждый раз делать выборку из базы, а просто завести некую переменную, которой присваивать соответствующее значение (админ, юзер) при входе юзера. И все остальные проверки делать уже на основе этой переменной, так и базу меньше будешь дёргать и скорость работы программы повысится. :)


Если Вы обратили внимание, то в Module1 есть глобальные переменные
Public strUserName As String ' логин пользователя LoginWin или LoginManager из таблицы tbl_Users
Public lngUserCod As Long ' код пользователя - idUsers из таблицы tbl_Users

Всё работает более-менее нормально, пока не начинают дёргать режимы авторизации.
Есть ещё два или три узких места: если админ БД сам у себя отобрал админские привилегии и если он сам себя удалил из базы.

Может действительно попробовать переписать как в системе?
20 дек 18, 08:37    [21769126]     Ответить | Цитировать Сообщить модератору
 Re: Модуль авторизации. Тестирование и обсуждение  [new]
Stanislav P
Member

Откуда: Сочи
Сообщений: 70
Я бы сделал новый тип данных и при авторизации запихивал бы все данные текущего юзера в переменную нового типа.
И все проверки свёл-бы к списку:
Проверка на последнего админ (блокируем чекбокс "админ")
Проверка на одинаковый логин Винды (можно просто сделать индексом)
Проверка на одинаковый локальный логин (то же самое - индекс)
Проверка на удаление самого себя (проверка при нажатии кнопки "удалить юзера")
20 дек 18, 10:51    [21769238]     Ответить | Цитировать Сообщить модератору
 Re: Модуль авторизации. Тестирование и обсуждение  [new]
Joss
Member

Откуда: г. Минск
Сообщений: 4884
Stanislav P
...
Проверка на одинаковый логин Винды (можно просто сделать индексом)
Проверка на одинаковый локальный логин (то же самое - индекс)
...
Я так и хотел в начале, но не получается. Они могут быть пустыми
20 дек 18, 11:22    [21769271]     Ответить | Цитировать Сообщить модератору
 Re: Модуль авторизации. Тестирование и обсуждение  [new]
Joss
Member

Откуда: г. Минск
Сообщений: 4884
Следующая версия. Пользователь и его привилегии определяются при входе в программу и действуют всю сессию.

К сообщению приложен файл (Authorization_0.6.15.rar - 120Kb) cкачать
20 дек 18, 14:40    [21769610]     Ответить | Цитировать Сообщить модератору
 Re: Модуль авторизации. Тестирование и обсуждение  [new]
Stanislav P
Member

Откуда: Сочи
Сообщений: 70
Joss
Я так и хотел в начале, но не получается. Они могут быть пустыми

Если есть система авторизации, то логин должен быть обязательно. В винду, да в любую ОС не зайдёшь без логина. То есть, у юзера должен быть, как минимум, один из двух логинов. То есть, при создании нового юзера нельзя выйти из формы, пока не будет вбит один из двух логинов.
У тебя всего семь возможных вариантов сочетания юзеров и админов. Всё это легко укладывается в тройку IF, или один SELECT CASE.
Можно свой ENUM сделать и при входе присваивать переменной "ТекущийСеанс" значение из enum и затем пропускать через CASE.
20 дек 18, 15:48    [21769733]     Ответить | Цитировать Сообщить модератору
 Re: Модуль авторизации. Тестирование и обсуждение  [new]
Stanislav P
Member

Откуда: Сочи
Сообщений: 70
В ОС всегда есть юзер - Гость, под ним авторизуются анонимы, в твоём случае его можно даже не заводить в таблицы.
Можно создать новый Enum "Тип Юзера" и три значения: админ, юзер, гость. И исходя из текущего типа юзера, и выбранного режима авторизации, показывать окно для ввода пароля встроенного админ (когда в выбранном варианте авторизации нет админов), либо блокировать доступ (есть другие админы у текущей авторизации), разрешать доступ если вошедший юзер админ в этой авторизации.
20 дек 18, 15:58    [21769750]     Ответить | Цитировать Сообщить модератору
 Re: Модуль авторизации. Тестирование и обсуждение  [new]
Joss
Member

Откуда: г. Минск
Сообщений: 4884
Stanislav P
Joss
Я так и хотел в начале, но не получается. Они могут быть пустыми

Если есть система авторизации, то логин должен быть обязательно. В винду, да в любую ОС не зайдёшь без логина. То есть, у юзера должен быть, как минимум, один из двух логинов. То есть, при создании нового юзера нельзя выйти из формы, пока не будет вбит один из двух логинов.
так и сделано. попробуйте создать пользователя без логина.
Stanislav P
У тебя всего семь возможных вариантов сочетания юзеров и админов. Всё это легко укладывается в тройку IF, или один SELECT CASE.
Можно свой ENUM сделать и при входе присваивать переменной "ТекущийСеанс" значение из enum и затем пропускать через CASE.
Ничего не понял. Какие сочетания? Есть пользователь. Он может быть админом. А может и не быть. Всё.
20 дек 18, 16:11    [21769773]     Ответить | Цитировать Сообщить модератору
 Re: Модуль авторизации. Тестирование и обсуждение  [new]
Joss
Member

Откуда: г. Минск
Сообщений: 4884
Stanislav P
В ОС всегда есть юзер - Гость, под ним авторизуются анонимы, в твоём случае его можно даже не заводить в таблицы.
Не есть, а предусмотрен. У нас на предприятии, да и у меня дома он отключен.
Stanislav P
Можно создать новый Enum "Тип Юзера" и три значения: админ, юзер, гость. И исходя из текущего типа юзера, и выбранного режима авторизации, показывать окно для ввода пароля встроенного админ (когда в выбранном варианте авторизации нет админов), либо блокировать доступ (есть другие админы у текущей авторизации), разрешать доступ если вошедший юзер админ в этой авторизации.
Не плодите сущности сверх необходимости. Зачем всё это?
Программа может быть без авторизации. Такую программу обычно ставят у себя на компьютере, где работает только один человек. Других пользователей не предусмотрено.
Программа может быть с Windows авторизацией. Как у меня на работе. Домен, выделенный сервер, строгие права. При входе авторизовался, зачем дёргаться ещё раз при входе в программу?
Программа может иметь авторизацию Login/Password. Это для персональных компьютеров коллективного пользования. Когда нет системщика, никто не заводит логины для каждого пользователя. И вообще возможно нет сети. Какая-нибудь малая организация. Пришел, включил компьютер, начал работать. Пришел сменщик. Встал, не выключая компьютер, пошел домой.
20 дек 18, 16:25    [21769798]     Ответить | Цитировать Сообщить модератору
 Re: Модуль авторизации. Тестирование и обсуждение  [new]
Озверин
Member

Откуда: Ростов-на-Дону
Сообщений: 5183
Joss, ну все таки это не windows авторизация....
Можно добавить авторизации по логину паролю с источником из AD по ldap протоколу.
20 дек 18, 16:45    [21769834]     Ответить | Цитировать Сообщить модератору
 Re: Модуль авторизации. Тестирование и обсуждение  [new]
Joss
Member

Откуда: г. Минск
Сообщений: 4884
Что-то я в терминологии запутался... А можно разъяснить подробнее?
20 дек 18, 22:04    [21770090]     Ответить | Цитировать Сообщить модератору
 Re: Модуль авторизации. Тестирование и обсуждение  [new]
Joss
Member

Откуда: г. Минск
Сообщений: 4884
Небольшое исправление. Предусмотрел флажок "Действующий" в параметрах сотрудника, но забыл включить его контроль. Исправился. Теперь в программу могут войти только действующие сотрудники.

К сообщению приложен файл (Authorization_0.6.16.rar - 118Kb) cкачать
21 дек 18, 08:38    [21770210]     Ответить | Цитировать Сообщить модератору
 Re: Модуль авторизации. Тестирование и обсуждение  [new]
Stanislav P
Member

Откуда: Сочи
Сообщений: 70
Joss
Что-то я в терминологии запутался... А можно разъяснить подробнее?

В операционных системах есть два типа авторизации:
1. Локальная, когда запись о пользователе храниться на этом конкретном компьютере.
2. Централизованная, когда запись о пользователе хранится в некоей системе.

Если сравнивать с твоей программой, то вариант "логин/пароль" может брать информацию о юзере не только из локальной таблицы юзеров, но и из прилинкованной, которая централизованно хранится в БД где-то на сервере и все копии твоей программы обращаются к этой таблице. LDAP, по сути - БД, для работы с ней нужна только строка подключения.
21 дек 18, 09:26    [21770232]     Ответить | Цитировать Сообщить модератору
 Re: Модуль авторизации. Тестирование и обсуждение  [new]
Лапух
Member

Откуда: Стойбище № 7
Сообщений: 865
Joss,

А откуда, при открытии БД, Оно знает, что меня нет в списке пользователей? Картинка с другого сайта.
21 дек 18, 10:54    [21770294]     Ответить | Цитировать Сообщить модератору
 Re: Модуль авторизации. Тестирование и обсуждение  [new]
Joss
Member

Откуда: г. Минск
Сообщений: 4884
Лапух
Joss,

А откуда, при открытии БД, Оно знает, что меня нет в списке пользователей? Картинка с другого сайта.
А Оно делает фото через Web камеру, сверяется со списками Интерпола, для надёжности ещё берёт отпечатки пальцев и фото сетчатки глаза... (шутка)

Сверяется с таблицей пользователей tbl_Users... Ну хорошо, после открытия БД... Если это определение для Вас так важно.
Перед допуском к интерфейсу задачи. Такое определение Вас устроит, Вини?
21 дек 18, 11:22    [21770310]     Ответить | Цитировать Сообщить модератору
 Re: Модуль авторизации. Тестирование и обсуждение  [new]
Joss
Member

Откуда: г. Минск
Сообщений: 4884
Stanislav P
Joss
Что-то я в терминологии запутался... А можно разъяснить подробнее?

В операционных системах есть два типа авторизации:
1. Локальная, когда запись о пользователе храниться на этом конкретном компьютере.
2. Централизованная, когда запись о пользователе хранится в некоей системе.

Если сравнивать с твоей программой, то вариант "логин/пароль" может брать информацию о юзере не только из локальной таблицы юзеров, но и из прилинкованной, которая централизованно хранится в БД где-то на сервере и все копии твоей программы обращаются к этой таблице. LDAP, по сути - БД, для работы с ней нужна только строка подключения.
Я там расписывал, что для сетевой работы с доменом должна использоваться Windows авторизация, а при работе на локальном компьютере - Login/Password
21 дек 18, 11:27    [21770314]     Ответить | Цитировать Сообщить модератору
 Re: Модуль авторизации. Тестирование и обсуждение  [new]
Stanislav P
Member

Откуда: Сочи
Сообщений: 70
Joss
Я там расписывал, что для сетевой работы с доменом должна использоваться Windows авторизация, а при работе на локальном компьютере - Login/Password

:) В Винде, которая в AD-домене можно зайти на локальный компьютер с локальным логином userA или зайти в домен с логином userA, но это абсолютно два разных юзера, хотя у них совпадает логин и может полностью совпадать ФИО.
То есть, на компьютере с именем Comp001, есть вариант входа Comp001\User1 и вариант Domen\User1
Если рассматривать форму авторизации в отрыве от остальной безопасности в программе, то эти логины равнозначные, если же рассматривать в комплексе, то это нарушение безопасности.
Озверин тебе сказал, что по логин/паролю так-же можно авторизовываться в LDAP, то есть, это тоже windows-авторизация, но не совсем стандартным путём. Но на это можно забить.
21 дек 18, 12:34    [21770370]     Ответить | Цитировать Сообщить модератору
 Re: Модуль авторизации. Тестирование и обсуждение  [new]
Лапух
Member

Откуда: Стойбище № 7
Сообщений: 865
Joss,

Я так и знал, что везде шпиены. Картинка с другого сайта. и за нами все следят. Картинка с другого сайта.
И ваще я не Вини, а Лапух. Картинка с другого сайта.

Да спасибо, попытаюсь проникнуть в нутрь сути конкретного места, а то уж очень много чего у вас там понаворочено.

Да и кстати, когда открываю ваш пример, то так как у меня 2000-й и DAO приходится ручками подключать в референсах ручками, что не даёт ни чего сделать. пока не зайдешь с шифтом.
Плюс приходится снимать галочку с библиотек более поздних версий.
Не будет ли это проблемой для пользователей, у которых офис не такой как у вас?
Ибо все равно же уберете возможность пользования шифтом в конце, да ещё и в mde наверное преобразуете.
21 дек 18, 12:38    [21770373]     Ответить | Цитировать Сообщить модератору
 Re: Модуль авторизации. Тестирование и обсуждение  [new]
Stanislav P
Member

Откуда: Сочи
Сообщений: 70
Joss, В последней версии, если включить режим windows-авторизация и при этом либо отключить пользователя с админскими правами, либо забрать их у него, в дальнейшем нельзя никаким образом воспользоваться админскими привелегиями. То есть, придётся вызывать программиста, чтобы как-то проадминистрировать программу. Соответственно в двух других режимах этой проблемы нет.
21 дек 18, 13:02    [21770418]     Ответить | Цитировать Сообщить модератору
 Re: Модуль авторизации. Тестирование и обсуждение  [new]
Joss
Member

Откуда: г. Минск
Сообщений: 4884
Stanislav P
Joss, В последней версии, если включить режим windows-авторизация и при этом либо отключить пользователя с админскими правами, либо забрать их у него, в дальнейшем нельзя никаким образом воспользоваться админскими привелегиями. То есть, придётся вызывать программиста, чтобы как-то проадминистрировать программу. Соответственно в двух других режимах этой проблемы нет.
это я уже просёк и в ближайших версиях доработаю. Будет возможность простому пользователю из 2-го режима переключиться в 3 режим.
21 дек 18, 13:37    [21770458]     Ответить | Цитировать Сообщить модератору
 Re: Модуль авторизации. Тестирование и обсуждение  [new]
Joss
Member

Откуда: г. Минск
Сообщений: 4884
Лапух
Joss,

Я так и знал, что везде шпиены. Картинка с другого сайта. и за нами все следят. Картинка с другого сайта.
И ваще я не Вини, а Лапух. Картинка с другого сайта.

Да спасибо, попытаюсь проникнуть в нутрь сути конкретного места, а то уж очень много чего у вас там понаворочено.

Да и кстати, когда открываю ваш пример, то так как у меня 2000-й и DAO приходится ручками подключать в референсах ручками, что не даёт ни чего сделать. пока не зайдешь с шифтом.
Плюс приходится снимать галочку с библиотек более поздних версий.
Не будет ли это проблемой для пользователей, у которых офис не такой как у вас?
Ибо все равно же уберете возможность пользования шифтом в конце, да ещё и в mde наверное преобразуете.

На счёт Вини. Просто вспомнилось

Пух: - Послушайте ТС, Дурацкий какой то у Вас План.
ТС: - Да, я знаю. Ну так Вы со мной?
Пух: - Естественно.

У меня самая младшая версия на компе - 2003. Могу выкладывать в ней. Или в двух вариантах: под DAO и под ACE. Но я ещё и под Access 64 bit тестировал. Вот и не поменял. Кстати. У можно отдельно скачать провайдер ACE и поставить у себя не переустанавливая офис. Может сделаете? Будет проще с примерами.
И ещё, настоятельно рекомендую поставить Office 2003 Portable. Выручал неоднократно. Никаких конфликтов с другими. Свободно работает в параллель с 64-х битными версиями офиса.

Я начал с очень простого, если посмотрите с первого поста. Но меня стали критиковать за недоделанность, Я тогда сразу написал, что все замечания можно устранить, но код вырастет и потеряет наглядность. Так и вышло.
Или режешь функциональность или мирись с увеличением объёма кода.
21 дек 18, 13:54    [21770468]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 2 3 [4] 5 6 7   вперед  Ctrl      все
Все форумы / Microsoft Access Ответить