powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Модуль авторизации. Тестирование и обсуждение
25 сообщений из 160, страница 4 из 7
Модуль авторизации. Тестирование и обсуждение
    #39750267
Stanislav P
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
JossВот последнюю ситуацию я ещё не сообразил, как избежать. Но думаю над этим.
У тебя на каждое движение постоянно идёт выборка из базы, поэтому и ошибка выскакивает.
Если взять пример реализации из операционной системы, то залогиненный юзер будет админом даже тогда когда у него отобрали права админа. Он перестанет быть админом только после того как выйдет и зайдёт заново.
То есть, тебе не нужно каждый раз делать выборку из базы, а просто завести некую переменную, которой присваивать соответствующее значение (админ, юзер) при входе юзера. И все остальные проверки делать уже на основе этой переменной, так и базу меньше будешь дёргать и скорость работы программы повысится. :)
...
Рейтинг: 0 / 0
Модуль авторизации. Тестирование и обсуждение
    #39750279
Stanislav P
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я бы реализацию делал бы немного иначе. Завёл-бы одну таблицу на всех юзеров. Если база нулевая, то появляется окошко регистрации админа и человек вводит нужный логин и ФИО, таким образом первый юзер всегда сначала админ, этим мы избавляемся от попыток подключения к базе под заранее известным логином. После чего показываем человеку окно логина, он вводит только-что введённый логин, после чего его статус пишется в TempVars-переменную и по ней мы уже проверяем его доступ. Так-же в TempVars записываем кол-во админов и уменьшаем это число каждый раз, когда у очередного юзера убирают галочку "Админ" (увеличиваем, если добавляют галочку). А если переменная кол-ва админов содержит только единицу, то делаем поле "Админ/не админ" заблокированным.
Можно в таблицу "Юзеры" ручками занести логин "админ" и исключить код добавления юзера на стадии первого подключения к нулевой базе.
...
Рейтинг: 0 / 0
Модуль авторизации. Тестирование и обсуждение
    #39750321
Фотография Лапух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Stanislav P...Я бы реализацию делал бы немного иначе. Завёл-бы одну таблицу на всех юзеров. Если база нулевая, то появляется окошко регистрации админа и человек вводит нужный логин и ФИО...
Я вот тоже об этом при первом скачивании БД для тестирования подумал.
Но посчитав, что я начал зрить пример не вникнув в суть вопроса, то стал смотреть с самого первого поста и примера, а соответственно заметил, что дабы каждый раз логин и пароль не вводить, ради сути, то сама форма авторизации временно была как бы отодвинута в сторону и обозначеноа главная задачка.
Или я в чём то не прав и самое главное как всегда упустил?
...
Рейтинг: 0 / 0
Модуль авторизации. Тестирование и обсуждение
    #39750333
Фотография Лапух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блин блинский.
Хотел тоже показать как я в своих тщетных попытках хотел нечто подобное сделать, а оно из за размера как всегда не приложилось.
Интересно из за чего?
Наверное я какой ни то типа - Максималист.
и не обращаю внимание на размах.
...
Рейтинг: 0 / 0
Модуль авторизации. Тестирование и обсуждение
    #39750457
Stanislav P
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Для своего проекта я делаю почти так, как выше описал. За исключением того, что у меня нет поля "Админ", у меня всё завязывается на RBAC-модели, а там надо хранить в памяти побольше данных и я ещё не придумал как это сделать красиво.
...
Рейтинг: 0 / 0
Модуль авторизации. Тестирование и обсуждение
    #39750582
Фотография Joss
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторЕсли взять пример реализации из операционной системы, то залогиненный юзер будет админом даже тогда когда у него отобрали права админа. Он перестанет быть админом только после того как выйдет и зайдёт заново.
То есть, тебе не нужно каждый раз делать выборку из базы, а просто завести некую переменную, которой присваивать соответствующее значение (админ, юзер) при входе юзера. И все остальные проверки делать уже на основе этой переменной, так и базу меньше будешь дёргать и скорость работы программы повысится. :)

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


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

Может действительно попробовать переписать как в системе?
...
Рейтинг: 0 / 0
Модуль авторизации. Тестирование и обсуждение
    #39750641
Stanislav P
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я бы сделал новый тип данных и при авторизации запихивал бы все данные текущего юзера в переменную нового типа.
И все проверки свёл-бы к списку:
Проверка на последнего админ (блокируем чекбокс "админ")
Проверка на одинаковый логин Винды (можно просто сделать индексом)
Проверка на одинаковый локальный логин (то же самое - индекс)
Проверка на удаление самого себя (проверка при нажатии кнопки "удалить юзера")
...
Рейтинг: 0 / 0
Модуль авторизации. Тестирование и обсуждение
    #39750662
Фотография Joss
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Stanislav P...
Проверка на одинаковый логин Винды (можно просто сделать индексом)
Проверка на одинаковый локальный логин (то же самое - индекс)
... Я так и хотел в начале, но не получается. Они могут быть пустыми
...
Рейтинг: 0 / 0
Модуль авторизации. Тестирование и обсуждение
    #39750864
Фотография Joss
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Следующая версия. Пользователь и его привилегии определяются при входе в программу и действуют всю сессию.
...
Рейтинг: 0 / 0
Модуль авторизации. Тестирование и обсуждение
    #39750915
Stanislav P
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
JossЯ так и хотел в начале, но не получается. Они могут быть пустыми
Если есть система авторизации, то логин должен быть обязательно. В винду, да в любую ОС не зайдёшь без логина. То есть, у юзера должен быть, как минимум, один из двух логинов. То есть, при создании нового юзера нельзя выйти из формы, пока не будет вбит один из двух логинов.
У тебя всего семь возможных вариантов сочетания юзеров и админов. Всё это легко укладывается в тройку IF, или один SELECT CASE.
Можно свой ENUM сделать и при входе присваивать переменной "ТекущийСеанс" значение из enum и затем пропускать через CASE.
...
Рейтинг: 0 / 0
Модуль авторизации. Тестирование и обсуждение
    #39750923
Stanislav P
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В ОС всегда есть юзер - Гость, под ним авторизуются анонимы, в твоём случае его можно даже не заводить в таблицы.
Можно создать новый Enum "Тип Юзера" и три значения: админ, юзер, гость. И исходя из текущего типа юзера, и выбранного режима авторизации, показывать окно для ввода пароля встроенного админ (когда в выбранном варианте авторизации нет админов), либо блокировать доступ (есть другие админы у текущей авторизации), разрешать доступ если вошедший юзер админ в этой авторизации.
...
Рейтинг: 0 / 0
Модуль авторизации. Тестирование и обсуждение
    #39750933
Фотография Joss
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Stanislav PJossЯ так и хотел в начале, но не получается. Они могут быть пустыми
Если есть система авторизации, то логин должен быть обязательно. В винду, да в любую ОС не зайдёшь без логина. То есть, у юзера должен быть, как минимум, один из двух логинов. То есть, при создании нового юзера нельзя выйти из формы, пока не будет вбит один из двух логинов. так и сделано. попробуйте создать пользователя без логина.
Stanislav PУ тебя всего семь возможных вариантов сочетания юзеров и админов. Всё это легко укладывается в тройку IF, или один SELECT CASE.
Можно свой ENUM сделать и при входе присваивать переменной "ТекущийСеанс" значение из enum и затем пропускать через CASE. Ничего не понял. Какие сочетания? Есть пользователь. Он может быть админом. А может и не быть. Всё.
...
Рейтинг: 0 / 0
Модуль авторизации. Тестирование и обсуждение
    #39750941
Фотография Joss
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Stanislav PВ ОС всегда есть юзер - Гость, под ним авторизуются анонимы, в твоём случае его можно даже не заводить в таблицы. Не есть, а предусмотрен. У нас на предприятии, да и у меня дома он отключен.
Stanislav PМожно создать новый Enum "Тип Юзера" и три значения: админ, юзер, гость. И исходя из текущего типа юзера, и выбранного режима авторизации, показывать окно для ввода пароля встроенного админ (когда в выбранном варианте авторизации нет админов), либо блокировать доступ (есть другие админы у текущей авторизации), разрешать доступ если вошедший юзер админ в этой авторизации. Не плодите сущности сверх необходимости. Зачем всё это?
Программа может быть без авторизации . Такую программу обычно ставят у себя на компьютере, где работает только один человек. Других пользователей не предусмотрено.
Программа может быть с Windows авторизацией. Как у меня на работе. Домен, выделенный сервер, строгие права. При входе авторизовался, зачем дёргаться ещё раз при входе в программу?
Программа может иметь авторизацию Login/Password . Это для персональных компьютеров коллективного пользования. Когда нет системщика, никто не заводит логины для каждого пользователя. И вообще возможно нет сети. Какая-нибудь малая организация. Пришел, включил компьютер, начал работать. Пришел сменщик. Встал, не выключая компьютер, пошел домой.
...
Рейтинг: 0 / 0
Модуль авторизации. Тестирование и обсуждение
    #39750950
Озверин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Joss, ну все таки это не windows авторизация....
Можно добавить авторизации по логину паролю с источником из AD по ldap протоколу.
...
Рейтинг: 0 / 0
Модуль авторизации. Тестирование и обсуждение
    #39751068
Фотография Joss
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что-то я в терминологии запутался... А можно разъяснить подробнее?
...
Рейтинг: 0 / 0
Модуль авторизации. Тестирование и обсуждение
    #39751135
Фотография Joss
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Небольшое исправление. Предусмотрел флажок "Действующий" в параметрах сотрудника, но забыл включить его контроль. Исправился. Теперь в программу могут войти только действующие сотрудники.
...
Рейтинг: 0 / 0
Модуль авторизации. Тестирование и обсуждение
    #39751149
Stanislav P
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
JossЧто-то я в терминологии запутался... А можно разъяснить подробнее?
В операционных системах есть два типа авторизации:
1. Локальная, когда запись о пользователе храниться на этом конкретном компьютере.
2. Централизованная, когда запись о пользователе хранится в некоей системе.

Если сравнивать с твоей программой, то вариант "логин/пароль" может брать информацию о юзере не только из локальной таблицы юзеров, но и из прилинкованной, которая централизованно хранится в БД где-то на сервере и все копии твоей программы обращаются к этой таблице. LDAP, по сути - БД, для работы с ней нужна только строка подключения.
...
Рейтинг: 0 / 0
Модуль авторизации. Тестирование и обсуждение
    #39751194
Фотография Лапух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Joss,

А откуда, при открытии БД, Оно знает, что меня нет в списке пользователей?
...
Рейтинг: 0 / 0
Модуль авторизации. Тестирование и обсуждение
    #39751203
Фотография Joss
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Лапух Joss,

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

Сверяется с таблицей пользователей tbl_Users ... Ну хорошо, после открытия БД... Если это определение для Вас так важно.
Перед допуском к интерфейсу задачи. Такое определение Вас устроит, Вини?
...
Рейтинг: 0 / 0
Модуль авторизации. Тестирование и обсуждение
    #39751206
Фотография Joss
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Stanislav PJossЧто-то я в терминологии запутался... А можно разъяснить подробнее?
В операционных системах есть два типа авторизации:
1. Локальная, когда запись о пользователе храниться на этом конкретном компьютере.
2. Централизованная, когда запись о пользователе хранится в некоей системе.

Если сравнивать с твоей программой, то вариант "логин/пароль" может брать информацию о юзере не только из локальной таблицы юзеров, но и из прилинкованной, которая централизованно хранится в БД где-то на сервере и все копии твоей программы обращаются к этой таблице. LDAP, по сути - БД, для работы с ней нужна только строка подключения. Я там расписывал, что для сетевой работы с доменом должна использоваться Windows авторизация, а при работе на локальном компьютере - Login/Password
...
Рейтинг: 0 / 0
Модуль авторизации. Тестирование и обсуждение
    #39751248
Stanislav P
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
JossЯ там расписывал, что для сетевой работы с доменом должна использоваться Windows авторизация, а при работе на локальном компьютере - Login/Password
:) В Винде, которая в AD-домене можно зайти на локальный компьютер с локальным логином userA или зайти в домен с логином userA, но это абсолютно два разных юзера, хотя у них совпадает логин и может полностью совпадать ФИО.
То есть, на компьютере с именем Comp001 , есть вариант входа Comp001\User1 и вариант Domen\User1
Если рассматривать форму авторизации в отрыве от остальной безопасности в программе, то эти логины равнозначные, если же рассматривать в комплексе, то это нарушение безопасности.
Озверин тебе сказал, что по логин/паролю так-же можно авторизовываться в LDAP, то есть, это тоже windows-авторизация, но не совсем стандартным путём. Но на это можно забить.
...
Рейтинг: 0 / 0
Модуль авторизации. Тестирование и обсуждение
    #39751251
Фотография Лапух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Joss,

Я так и знал, что везде шпиены.
и за нами все следят.

И ваще я не Вини, а Лапух.


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

Да и кстати, когда открываю ваш пример, то так как у меня 2000-й и DAO приходится ручками подключать в референсах ручками, что не даёт ни чего сделать. пока не зайдешь с шифтом.
Плюс приходится снимать галочку с библиотек более поздних версий.
Не будет ли это проблемой для пользователей, у которых офис не такой как у вас?
Ибо все равно же уберете возможность пользования шифтом в конце, да ещё и в mde наверное преобразуете.
...
Рейтинг: 0 / 0
Модуль авторизации. Тестирование и обсуждение
    #39751278
Stanislav P
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Joss, В последней версии, если включить режим windows-авторизация и при этом либо отключить пользователя с админскими правами, либо забрать их у него, в дальнейшем нельзя никаким образом воспользоваться админскими привелегиями. То есть, придётся вызывать программиста, чтобы как-то проадминистрировать программу. Соответственно в двух других режимах этой проблемы нет.
...
Рейтинг: 0 / 0
Модуль авторизации. Тестирование и обсуждение
    #39751300
Фотография Joss
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Stanislav PJoss, В последней версии, если включить режим windows-авторизация и при этом либо отключить пользователя с админскими правами, либо забрать их у него, в дальнейшем нельзя никаким образом воспользоваться админскими привелегиями. То есть, придётся вызывать программиста, чтобы как-то проадминистрировать программу. Соответственно в двух других режимах этой проблемы нет. это я уже просёк и в ближайших версиях доработаю. Будет возможность простому пользователю из 2-го режима переключиться в 3 режим.
...
Рейтинг: 0 / 0
Модуль авторизации. Тестирование и обсуждение
    #39751309
Фотография Joss
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЛапухJoss,

Я так и знал, что везде шпиены.
и за нами все следят.

И ваще я не Вини, а Лапух.


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

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

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

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

Я начал с очень простого, если посмотрите с первого поста. Но меня стали критиковать за недоделанность, Я тогда сразу написал, что все замечания можно устранить, но код вырастет и потеряет наглядность. Так и вышло.
Или режешь функциональность или мирись с увеличением объёма кода.
...
Рейтинг: 0 / 0
25 сообщений из 160, страница 4 из 7
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Модуль авторизации. Тестирование и обсуждение
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]