Учитывая дополнительную информацию в вашем комментарии. Похоже, это работает так же, как вы должны выполнить сброс пароля.
Для сброса пароля вы включаете в запрос токен одноразового сброса пароля (вместе с паролем / проверенным паролем и т. Д. c.) Я бы явно украсил действие с помощью [AllowAnonymous]
и проверил токен в, прежде чем обновлять какие-либо сведения и отменил токен.
В вашем случае я бы сделал то же самое - явно украсил действие с помощью [AllowAnonymous]
и подтвердите одноразовый токен. Вашему действию не должно быть важно, был ли фильтр AllowAnonymous
применен к действию через атрибут или опции.
ОБНОВЛЕНИЕ Подумайте еще немного, и есть простой способ отключить это на основе конфигурации сборки. Оберните атрибут в директиву препроцессора #if
и создайте конфигурацию сборки, которая определяет символ условного соответствия. См. этот ответ для получения подробной информации
#if DISABLE_ALLOW_ANONYOMOUS
[AllowAnonymous]
#endif
public IActionResult GetPicture(string token){
...
Затем вы можете создать спецификацию теста c версию, в которой AllowAnonymous
отключена.
Вы также можете сделать то же самое с MvcOptions:
#if DISABLE_ALLOW_ANONYOMOUS
opts.Filters.Add(new AllowAnonymousFilter());
#endif