Мне нужно иметь возможность идентифицировать одну систему от другой в ASP.Net, используя все, что доступно в HttpContext. Я пытался использовать многие из доступных ServerVariables, но часто системы настраиваются с диска, созданного на основе образа. Итак, из-за брандмауэра их IP-адрес один и тот же, и все их ServerVariables (browseragent, logonuser) одинаковы, мне нужно найти что-то еще, что отличало бы разные машины. Поскольку сайт защищен с помощью форм, встроенная проверка подлинности Windows должна быть отключена (в противном случае у меня будет доступ к другим значениям Logon_User).
Я не женат на HttpContext, но мне кажется, что это единственный способ использовать код для получения идентифицируемой информации о пользователе.
РЕДАКТИРОВАТЬ/ОБНОВИТЬ:
@Robert Harvey предоставил пару ссылок для поиска, которые дали много результатов, большинство из которых не соответствуют моим требованиям по той или иной причине (хотя там все еще есть пара отличных идей, о которых я не подумал до). В первую очередь мне нужно иметь возможность определить, переключил ли кто-то компьютеры за брандмауэром. Поэтому я предоставлю некоторые детали структуры кода, которые прольют свет на то, почему некоторые вещи не работают у меня.
- Сеансы/куки сохраняются до полуночи (решение было принято выше моей головы, я живу с этим)
- Пользователь, прошедший проверку подлинности, не использует класс MembershipUser. (даже если бы это было так, MembershipUser.IsOnline не предложил бы мне ничего, кроме ранее вошедшего в систему пользователя)
- Известно, что пользователи удаляют файлы cookie или закрывают браузеры, не выходя из системы.
- Мне нужны некоторые критерии, которые могут отличать одну машину от другой, не обязательно для предотвращения одновременных входов в систему, но, по крайней мере, для их идентификации.
HttpRequest.UserHostName
? - person PhilPursglove   schedule 13.07.2010