Я разработал веб-приложение в PHP для клиента. Клиент теперь арендует доступ к системе другой компании для каждого пользователя.
Есть ли способ предотвратить использование вторичной компанией единого входа и одновременное использование 20 человек? Я знаю, что можно получить IP-адрес клиентской машины, из которой вы входите, но это, очевидно, не очень надежный метод. Ответ, вероятно, заключается в сочетании файлов cookie и отслеживания вещей в базе данных, но мой мозг немного зациклился на том, как реализовать стратегию здесь.
Создайте уникальный идентификатор сеанса, когда пользователь входит в систему и сохраняет его в БД. Добавьте что-то к коду аутентификации сеанса (запустите на всех посещениях страниц), который проверяет, что идентификатор сеанса пользователя совпадает с идентификатором пользователя в БД, а если нет, выйдите из системы. Тогда ваше веб-приложение будет доступно только одному пользователю за раз.
Если быть абсолютно честным, не можете ли вы поднять эту проблему со своим клиентом?
Невозможно определить, является ли учетная запись общим для 20 человек. Вы можете ограничить доступ, блокируя одновременное использование через cookie сеанса.
Прежде всего, защитите себя опубликованным документом « Условия и положения» . Нарушение которого – отменяет любое постоянное соглашение / контракт. И подавайте в суд на них, если вы можете предоставить доказательства (журналы), которые они нарушили.
Убедитесь, что вы привязали одного пользователя к одному сеансу. Таким образом, вы можете создать экран предупреждения, если кто-то использует тот же логин с другим сеансом. Затем вы можете позволить пользователю выбрать другой сеанс.
Таким образом, вы можете убедиться, что два пользователя не используют систему одновременно. Это немного похоже на программное обеспечение, которое вы установили на компьютер: несколько пользователей могут его использовать, но только по одному. Это, наверное, хорошо.
Если вы этого не хотите, вы должны попытаться привязать логин более твердо к пользователю: убедитесь, что он входит в систему с личным адресом электронной почты, и он получает уведомления (если применимо) по электронной почте. Также позвольте пользователю установить личные конфигурации. Таким образом, вы создаете дополнительную ценность для пользователей, чтобы иметь собственную учетную запись.
Если у вас есть логин, у вас есть аутентификация, и вы пишете любой идентификатор пользователя в сеансе, убедитесь, что только один сеанс с этим идентификатором создан, если в сеансе уже существует сообщение об ошибке throw.
Единственная проблема, с которой вы столкнетесь в случае, если пользователь не выйдет из системы правильно, вместо того, чтобы нажимать кнопку x на браузере, тогда он не сможет войти в систему до тех пор, пока сеанс не будет истек.