|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
30.10.2018, 01:47 | #1 |
Новичок
Джуниор
Регистрация: 24.04.2011
Сообщений: 3
|
Проверка актуальных данных о пользователе.
Здравствуйте. Разрабатываю локальный веб сервер,с авторизацией и разделением прав пользователей, после авторизации в сессии пользователя устанавливается флаг успешной авторизации и тянутся из БД ряд других переменных для данного пользователя. Но как быть, если например во время работы пользователя в системе, админ с другого компа удаляет этого пользователя, или меняет его права ? На данный момент при удалении пользователя все данные о нём удаляются из БД, включая и данные во всех связанных таблицах.
Вариантов решения вижу несколько: 1. Проверять авторизацию (с проверкой логина/пароля), его права и другие данные о пользователе при каждом его действии. Минус такого подхода вижу в увеличении количества запросов в БД. 2. При удалении пользователя, или других действиях с ним пробегаться в цикле по всем сессиям, и, если нужный пользователь в данный момент "на сервере" убивать его сессию или обновлять актуальные данные из БД. Вариант вроде бы не плохой, к тому же сервер локальный, и число пользователей относительно не велико. 3. Не удалять пользователя из БД, а помечать его флагом удаления, и при выполнении всех операций запрашивать только состояние этого флага в БД, и если он установлен, тогда ...переходить к п.2. 4. А как вы поступили бы в данном случае ? может есть какие то общепринятые способы ? P.S. Я не являюсь конкретно Веб-разработчиком, и опыта в разработке многопользовательских систем не так много. |
30.10.2018, 01:52 | #2 |
Новичок
Джуниор
Регистрация: 24.04.2011
Сообщений: 3
|
Пока писал сообщение, придумал ещё один, и наверное наилучший вариант:
А что если выполнять п.2 только при смене "настроек" пользователя админом ? |
30.10.2018, 09:34 | #3 |
Старожил
Регистрация: 25.02.2007
Сообщений: 4,177
|
более правильно - п 3. + 2 при смене
удалять физически не очень хорошая идея... |
30.10.2018, 11:06 | #4 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
удалять полностью - имхо, не вариант для нормальной системы.
выставляйте признак удаления и в запросе достаточно добавить проверку and is_deleted=0 и всё - удалённые пользователи не отображаются в запросах. по поводу изменения. При каждом обращении пользователя к БД первым должно идти запрос на проверку пользователя - есть ли такой в БД и какие у него права. Вот в этой процедуре и обновятся права (если их кто-то где-то изменил) и запрос будет с учётом признака удаления записи. Т.е. пользователь, которого удалили, при попытке перейти на другую страницу или обновить текущую получит отлуп - "Такого пользователя нет". Насчёт увеличения количества запросов не переживайте. Современные БД легко выдерживают сотни тысяч запросов в секунду. p.s. всё высказанное является исключительно моим личным мнением. прошу относиться к моим словам с долей здорового скептицизма |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Выборка актуальных данных с удалением оригинальной и дублирующей записи | Dima36668 | Microsoft Office Excel | 9 | 03.06.2013 23:59 |
Получить данные о пользователе и о времени | PinkPink | C/C++ Сетевое программирование | 1 | 03.04.2013 21:17 |
РНР информация о пользователе | gunsoy | PHP | 4 | 31.05.2011 19:15 |
Сохранение данных о пользователе | DEFENEK | Помощь студентам | 0 | 08.05.2009 19:07 |
Слишком много актуальных параметров... | extrimportal | Общие вопросы Delphi | 7 | 22.04.2009 22:41 |