Рассматривать определенный IP-адрес как зарегистрированный для сканирования защищенного контента на веб-сайте .Net.

Net, использующий проверку подлинности с помощью форм, который будет сканироваться устройством Google Mini для поиска по сайту. GMini немного устарел и, по-видимому, не поддерживает сканирование сайта с использованием проверки подлинности с помощью форм. Предположительно, Gmini не сохраняет файл cookie авторизации или, возможно, просто не понимает формы входа.

Есть ли способ убедить IIS/.Net обрабатывать все запросы с IP-адреса GMini как уже зарегистрированные в качестве конкретного пользователя, имеющего доступ к защищенному контенту?


person DaveBeta    schedule 09.01.2013    source источник
comment
Вы знаете, что легко подделать IP-адрес?   -  person Aristos    schedule 09.01.2013
comment
Хорошая точка зрения. Я бы спросил, возможно ли, чтобы кто-то в Интернете подделал IP-адрес в нашей внутренней сети ... наверняка они не увидят свои данные ответа? В любом случае это действительно не очень безопасный контент. Это просто за логином в маркетинговых целях - люди должны зарегистрироваться, чтобы прочитать его   -  person DaveBeta    schedule 09.01.2013


Ответы (1)


на global.asax вы можете использовать Application_AuthenticateRequest и проверить, пришел ли пользователь из списка ips, вы автоматически логируете как:

protected void Application_BeginRequest(Object sender, EventArgs e)
{
    // check that is not all ready logged in.
    if(HttpContext.Current.User == null || HttpContext.Current.User.Identity == null || !HttpContext.Current.User.Identity.IsAuthenticated)
    {
        // check if its on your Ip List, or check if(HttpContext.Current.Browser.Crawler)
        if(ListWithPassIps.Contains(HttpContext.Current.Request.UserHostAddress))
        {
            FormsAuthentication.SetAuthCookie("[email protected]", true);
        }
    }
}

Проблема может заключаться в том, что сканеры не сохранили файл cookie, но я думаю, что это регистрирует его по крайней мере для этого сеанса. "[email protected]" может быть пользователем, которого вы заставили просматривать понравившуюся вам страницу.

Вы также можете проверить, если это request.Browser.Crawler, а не по ip, который сложнее найти в одной из основных поисковых систем.

person Aristos    schedule 09.01.2013
comment
Почти! Функция Application_AuthenticateRequest, по-видимому, вызывается после модуля аутентификации, поэтому уже слишком поздно для входа пользователя. Я изменил Application_AuthenticateRequest на Application_BeginRequest, и все заработало. Спасибо за вашу помощь :-) - person DaveBeta; 10.01.2013
comment
@DaveBeta Круто, я тоже меняю здесь. - person Aristos; 10.01.2013