В нашей системе один клиент может иметь несколько операторов. Однако есть «желание» от клиента. У одной компании есть учетная запись, однако для этой компании могут быть задействованы операторы mulitple. Клиент хочет, чтобы мы подготовили решение, которое только один оператор из компании может войти в систему в одно и то же время. Как я могу это достичь?Разрешить логин только одному пользователю в момент времени
ответ
«Я с помощью приложения WPF и сервер написан в WCF, однако это может быть достигнуто. Но что в ситуации, когда пользователь открыл приложение и был неактивным в течение 30 минут? »
Эта система будет однопользовательской, поэтому я предлагаю вам начать встречный поток, когда пользователь входит в систему. Когда счетчик достигает 30 минут, напишите значение в db, указав, что пользователь имеет время ожидания, а другие пользователи могут войти в систему. Очевидно, что вы должны сделать то же самое, когда пользователь явно выйдет из системы.
встречный поток? это довольно бесполезно и ** плохой дизайн ** .... логика тайм-аута должна быть частью логики сервера, а НЕ как поток - но как строка структуры данных/таблицы, которая проверяется на запросах, которые необходимо защитить ... Если это был erlang, и вы создали счетчик потока .... это может быть хорошо. –
Я пропустил вашу точку ... «но как структуру данных/таблицу, проверенную на запросах, которые необходимо защитить» ... уверен, это очевидно, иначе не было бы никакой утилиты при написании значения для db, указывающий, что пользователь отключился. Но, на ваш взгляд, что было бы хорошим способом проверки времени ожидания пользователя? Я не мог думать иначе, по крайней мере до сих пор. –
Прочтите статью в своем ответе - она будет посвящена различным аспектам распределенной аутентификации. –
Вы можете использовать поле базы данных, чтобы отметить, что они вошли в систему. Обновите поле до «вошедшего в систему», когда они это сделают, а затем обновите его до «вышли из системы» при выходе из системы.
Вам также необходимо будет контролировать сеансы входа в систему для истечения срока действия, чтобы обновить поле, если пользователь никогда не беспокоился о явном выходе из системы.
yes..i хотел сделать так, но как я могу контролировать сеансы входа в систему? –
Просто убедитесь, что система имеет возможность проверить логин по каждому запросу. Либо
- в активном (путем запроса состояния - возможно, базу данных для сравнения некоторые секреты) или
- Пассивно - используя некоторую форму криптографии и токенов (возможно, в куки).
Вариант один самый простой, вариант 2 является самым быстрым. Если вы проверяете по каждому запросу, вы можете убедиться, что только один пользователь остается в системе - если другой пользователь подписывается, вы можете аннулировать существующий активный логин - возможно, с периодом перезарядки n минут.
Вы должны разработать некоторую форму схемы авторизации - Керберос является схемой де-факто - читать это легко следовать учебник по Керберосу Designing an Authentication System: a Dialogue in Four Scenes Это должно показать вам, что вы на самом деле нужно сделать.
Лучший подход, который я использовал:
- Создайте таблицу, используемую для отслеживания, является ли оператор вошел в (например, идентификатор пользователя и last_accessed_dt)
- На каждом запросе страницы с помощью обновления оператора последний просил дата/время
- Когда оператор пытается войти в систему, он может сделать это только в том случае, если последний запрос времени/времени> периода ожидания сеансов на вашем веб-сайте (например, 30 минут) или если это идентификатор пользователя последнего оператора ... это способ, который они могут быстро восстановить после выхода из системы и т.д.
- Whe п оператор выходит из иметь последнюю Достигано очистило
- Когда время сеанса из-есть последний Достигано очистил
Я использую приложение WPF, и сервер написан на WCF, однако это может быть достигнуто ,Но что в ситуации, когда пользователь открыл приложение и не работал в течение 30 минут? –
- 1. Как разрешить только одному пользователю видеть «UpdateView»?
- 2. Как разрешить только одному конкретному пользователю войти в активный администратор?
- 3. Как разрешить только одному пользователю редактировать объект Parse?
- 4. Разрешить только одному пользовательскому агенту-пользователю выполнять код PHP
- 5. Как разрешить только одному пользователю регистрироваться со Stormpath
- 6. Как разрешить доступ только одному пользователю к базе данных?
- 7. Разрешить пользователю вводить только текст?
- 8. Как разрешить одному пользователю отправлять запрос другому пользователю, только если у обоих есть приложение?
- 9. Как разрешить только одному пользователю запустить мою программу на C#, но также разрешить несколько экземпляров?
- 10. Доступ TFS запрещен только одному пользователю домена
- 11. ASP.NET MVC, разрешающий только одному зарегистрированному пользователю
- 12. Выполнение вызовов API Google только одному пользователю
- 13. Разрешить логин только с указанного ПК
- 14. Как разрешить одному пользователю администратора писать базу данных Firebase?
- 15. Как разрешить пользователю только для чтения ESXi войти в систему?
- 16. как разрешить пользователю изменять только собственный контент?
- 17. Как разрешить доступ только одному домену
- 18. Как разрешить пользователю вводить только строку?
- 19. Разрешить пользователю изменить только первую цифру
- 20. Разрешить только одному пользователю получать доступ к странице за раз в приложении struts
- 21. Как я могу активировать функцию .hover() только по одному элементу в момент времени
- 22. Приложение В момент времени
- 23. NSNotication в момент времени
- 24. Разрешить только одну модель в коллекции Backbone иметь активную собственность в любой момент времени
- 25. Простой Выделите только один элемент в момент времени
- 26. Как разрешить пользователю только вступать в соревнование facebook
- 27. Обновление в режиме реального времени только одному пользователю (а не каналу) за раз. Как это сделать?
- 28. Разрешить пользователю редактировать профиль
- 29. Разрешить пользователю изменить иконку
- 30. Назначение нескольких ролей одному пользователю
Как вы проверяете подлинность? Является ли это распространенным env.? –
да .. для целей аутентификации задействован db. –