Разрешить вход только одному пользователю за раз - PullRequest
0 голосов
/ 02 февраля 2010

В нашей системе один клиент может иметь несколько операторов. Однако есть «желание» от клиента. У одной компании есть учетная запись, однако для этой компании может быть назначено несколько операторов. Клиент хочет, чтобы мы подготовили решение, в которое только один оператор из компании может одновременно войти в систему. Как мне этого добиться?

Ответы [ 4 ]

2 голосов
/ 02 февраля 2010

Просто убедившись, что у них есть возможность проверять логин при каждом запросе. Либо

  1. Активно (путем запроса состояния - возможно, база данных для сравнения некоторых секретов) или
  2. Пассивно - с использованием некоторой формы криптографии и токенов (возможно, в файле cookie).

Первый вариант самый простой, второй вариант самый быстрый. Если вы выполняете проверку по каждому запросу, вы можете убедиться, что только один пользователь остается в системе - если другой пользователь входит в систему, вы можете сделать недействительной существующую активную учетную запись - возможно, с периодом перезарядки n минут количества.

Вы должны разработать некую форму схемы входа в систему - Kerberos - это схема де-факто - прочтите это простое руководство по Kerberos Проектирование системы аутентификации: диалог в четырех сценах Он должен показать вам, что Вы действительно должны сделать.

1 голос
/ 02 февраля 2010

Лучший подход, который я использовал:

  1. Создание таблицы, используемой для отслеживания входа оператора (например, userid и last_accessed_dt)
  2. На каждой странице запроса оператора обновляются последние запрошенные дата / время
  3. Когда оператор пытается войти в систему, он может сделать это только в том случае, если последние запрошенные данные / время> период ожидания сеансов на вашем веб-сайте (например, 30 минут) или если они являются последним идентификатором пользователя оператора ... таким образом, они могут быстро восстанавливаться после выхода из системы и т. д.
  4. Когда оператор выходит из системы, очищается последний доступ
  5. По истечении времени ожидания сеанса очистить последний доступ
1 голос
/ 02 февраля 2010

Вы можете использовать поле базы данных, чтобы пометить, что они вошли в систему. Измените поле на «авторизовано», когда они это сделают, а затем обновите его до «вышло из системы», когда они выйдут из системы.

Вам также необходимо следить за сессиями входа в систему по истечении срока действия, чтобы обновить поле, если пользователь никогда не удосужился явно выйти из системы.

0 голосов
/ 02 февраля 2010

"Я использую приложение WPF, а сервер написан на WCF, однако этого можно достичь. Но что в случае, когда пользователь открыл приложение и неактивно в течение 30 минут?"

Эта система будет однопользовательской, поэтому я предлагаю вам запустить поток счетчиков, когда пользователь входит в систему. Когда счетчик достигнет 30 минут, запишите значение в БД, указывающее, что у пользователя истекло время ожидания, а другие пользователи могут свободноавторизоваться.Очевидно, вы должны делать то же самое, когда пользователь явно выходит из системы.

...