Как вы можете отслеживать, с каких терминалов пользователь вошел в систему? - PullRequest
3 голосов
/ 15 марта 2012

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

Как Quora может это сделать?Как можно было бы реплицировать эту функциональность?

Я делаю большую часть своего кодирования в ruby ​​на рельсах, так что если кто-то захочет ответить в этом контексте, это будет здорово, но я открыт для просмотра ответов независимо от этого.

1 Ответ

0 голосов
/ 16 марта 2012

Когда вы отправляете HTTP-запрос на сервер, заголовки, отправляемые вместе с запросом, включают в себя IP-адрес, с которого исходил запрос.Полный набор заголовков доступен на вашем контроллере, а IP-адрес доступен с request.client_ip.

Чтобы получить имя хоста, связанное с этим IP-адресом, вам нужно выполнить «обратный поиск DNS», например:

require "socket"

Socket.gethostbyname(request.client_ip)

Это, вероятно, требует небольшую библиотеку в app/libкоторый вы можете require в application_controller.rb.Это всего лишь несколько строк кода, но умоляющее имя просит: -)

...