@WithUserDetails и @WithMockUser при использовании springSecurity () в MockMVC с производственной аутентификационной логикой - PullRequest
0 голосов
/ 14 января 2019

После отладки в течение некоторого времени я обнаружил, что @WithUserDetails и @WithMockUser подставляют SecurityContext, но не добавляют поддельные Authentication Provider, поэтому в случае, если это используется с рабочим кодом,

  • SecurityContextHolder заполнен поддельным SecurityContext, содержащим наш фиктивный Authentication объект

  • Фильтры включаются, и все системы аутентификации продукта не работают, потому что в ProviderManager нет лишних AbstractUserDetailsAuthenticationProvider, а после последней ошибки SecurityContext сбрасывается, поэтому я теряю настройку аутентификации тестового макета .. .

Итак ... есть ли какой-нибудь встроенный способ использовать тестовые удобные @With .. аннотации над рабочим кодом авторизации? Это ошибка? Могу ли я изменить порядок предыдущих пунктов, чтобы, по крайней мере, подготовка к тестированию произошла позже?

1 Ответ

0 голосов
/ 17 января 2019

Правильно, @WithUserDetails и @WithMockUser предназначены, когда вы хотите смоделировать запрос, который уже аутентифицирован.

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

Другой вариант - переписать тест для аутентификации так, как это ожидает ваше приложение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...