Аутентификация форм через субдомены

Если вы посмотрите HTML-код веб-страницы, есть два элемента со значением поля имени «FirstName». (Вы можете найти строку '// * [@ name = "FirstName"]' в опциях разработчика, чтобы проверить.)

Таким образом, вы можете использовать что-то вроде этого, чтобы получить элемент, который вы ищете:

driver.find_elements_by_name('FirstName')[1].send_keys('test', Keys.ENTER)

Здесь метод find_elements.. возвращает список всех элементов, имеющих один и тот же локатор, вместо первого сверху, как метод find_element.., а искомый элемент идет вторым сверху поэтому мы индексируем результат find_elements.. с индексом '1'.

Кстати, я пробовал это в Chrome, но он должен работать и в Firefox.

26
задан Miyagi Coder 13 April 2012 в 13:56
поделиться

4 ответа

Можно установить cookie, чтобы быть родительским доменом во время аутентификации, но необходимо явно установить его, он примет значение по умолчанию к полному домену, что Вы идете.

, Как только подлинный cookie правильно установлен на родительский домен, тогда все субдомены должны быть в состоянии считать его.

10
ответ дан Jeff Martin 28 November 2019 в 06:36
поделиться

Когда Вы аутентифицируете пользователя, устанавливаете домен cookie аутентификации на домен второго уровня, т.е. parent.com. Каждый субдомен получит cookie родительского домена по запросу, таким образом, аутентификация по каждому будет возможна, так как у Вас будет общий cookie аутентификации для работы с.

Код аутентификации:

System.Web.HttpCookie authcookie = System.Web.Security.FormsAuthentication.GetAuthCookie(UserName, False);
authcookie.Domain = "parent.com";
HttpResponse.AppendCookie(authcookie);
HttpResponse.Redirect(System.Web.Security.FormsAuthentication.GetRedirectUrl(UserName, 
                                                                       False));
29
ответ дан jro 28 November 2019 в 06:36
поделиться

Да, конечно. Вам, возможно, понадобится к самокрутке на некоторых этапах, но это должно быть выполнимо.

Одна идея: поскольку Вы перенаправляете их через границу, даете им одноразовый маркер передачи и затем говорите субдомену получения ожидать их (этот пользователь, от этого IP, с этим маркером).

4
ответ дан GEOCHET 28 November 2019 в 06:36
поделиться

В качестве примечания я обнаружил, что после использования метода jro, который хорошо работал +1, метод FormsAuthenication.SignOut () не работал при вызове из поддомена, отличного от www /. (Я предполагаю, потому что свойство .Domain не совпадает) - Чтобы обойти это, я использовал:

if (Request.Cookies[FormsAuthentication.FormsCookieName] != null)
            {
                HttpCookie myCookie = new HttpCookie(FormsAuthentication.FormsCookieName);
                myCookie.Domain = "parent.com";
                myCookie.Expires = DateTime.Now.AddDays(-1d);
                Response.Cookies.Add(myCookie);
            }
7
ответ дан 28 November 2019 в 06:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: