2015-05-04 4 views
3

Я пытаюсь сделать операцию JMeter пост в приложении simle рельсы, но я получаю следующее назад:JMeter подлинность маркера с Rails App

Начало POST «/ рейсы /» для 127.0.0.1 в 2015-05 -04 12:40:15 -0700 Обработка FlightsController # создать в HTML Параметры: { "authenticity_token" => "$ (LOGIN_AUTH_TOKEN)"} не можете проверить CSRF токен подлинность Завершена 422 Unprocessable Entity в 3ms (ActiveRecord : 0.0ms)

Я внедрил предложение о создании экстрактора регулярных выражений для входа в систему аутентификации, как показано ниже:

Regular Expression Extractor

и вот запрос HTTP:

http post request

Любая помощь приветствуется и спасибо заранее, Славко

+0

Почему этот вопрос был опущен? – dbeachy1

ответ

1
  • Переместить Regular Expression Extractor как дочерний элемент из первый HTTP-запрос.
  • Регулярное выражение может быть name=authenticity_token type=hidden value=(.*?)"
  • В следующем запросе, доступ authenticity_token с помощью ${LOGIN_AUTH_TOKEN} (не по $ (LOGIN_AUTH_TOKEN))
+0

В моем случае он по-прежнему остается неизменным, следующим является ответ в консоли Параметры: {"authenticity_token" => "$ {FORM_AUTH_TOKEN}"} –

+0

Также не забудьте поместить HttpCookieManager в свою ThreadGroup, потому что Rails save проверяет токен против той, которая находится в сессии, которая обычно находится в файле cookie. – Jakub

+2

И не уверен, что JMETER не делает этого сам по себе, но мне нужно было закодировать извлеченный токен как '$ {__ urlencode ($ {FORM_AUTH_TOKEN})}' – Jakub

0

Я думаю Vinoth был прав, но это выглядит, как только заголовки запроса были проверяются. Поле формы находится в теле, поэтому процессор Regex должен смотреть туда.

0

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

Я искал источник для «подлинности», и вот что она дала:

<meta name="csrf-param" content="authenticity_token" /> 
<meta name="csrf-token" content="O4YJPTDTmHqxAtgVYLTyDnuo1gwNoDQFznnqwsUyvdMkJscVXx+YMteKkuMVG44E/H6NYCdi/RzbQ8oIly2euA==" /> 

я изменил свое регулярное выражение внутри регулярного выражения Extractor JMeter для: meta name="csrf-token" content="(.*?)" />

Я побежал мой JMeter тест и успешно вошли в мое приложение для разработки.

Я нахожусь на Rails 4.2.1 и Ruby 2.2.1p85.

Смежные вопросы