Весенняя загрузка Zuul Авторизация заголовка перехватчика [дубликат]

  1. Всегда пытайтесь отправлять заголовки в почтовую функцию.
  2. Если вы отправляете почту через localhost, тогда выполните настройки smtp для отправки почты.
  3. Если вы отправляете почту через затем проверьте, включена ли функция отправки электронной почты на вашем сервере.
17
задан phoenix7360 12 May 2016 в 07:42
поделиться

3 ответа

Вы можете попробовать установить setSendZuulResponse(false) в текущем контексте. Это не должно направлять запрос. Вы также можете вызвать removeRouteHost() из контекста, который достигнет того же. Вы можете использовать setResponseStatusCode для установки кода состояния 401.

9
ответ дан mbragg02 21 August 2018 в 11:44
поделиться

Я знаю, что очень поздно ответить. Можно подойти с предфильтром зууля. Ниже приведены шаги, которые вам нужно выполнить.

 //1. create filter with type pre
 //2. Set the order of filter to greater than 5 because we need to run our filter after preDecoration filter of zuul.
 @Component
 public class CustomPreZuulFilter extends ZuulFilter {

  private final Logger logger = LoggerFactory.getLogger(this.getClass());

@Override
public Object run() {
    final RequestContext requestContext = RequestContext.getCurrentContext();
    logger.info("in zuul filter " + requestContext.getRequest().getRequestURI());
    byte[] encoded;
    try {
        encoded = Base64.encode("fooClientIdPassword:secret".getBytes("UTF-8"));
        requestContext.addZuulRequestHeader("Authorization", "Basic " + new String(encoded));

        final HttpServletRequest req = requestContext.getRequest();
        if (requestContext.getRequest().getHeader("Authorization") == null
                && !req.getContextPath().contains("login")) {
            requestContext.unset();
            requestContext.setResponseStatusCode(HttpStatus.UNAUTHORIZED.value());

        } else {
              //next logic
            }
        }

    } catch (final UnsupportedEncodingException e) {
        logger.error("Error occured in pre filter", e);
    }

    return null;
}



@Override
public boolean shouldFilter() {
    return true;
}

@Override
public int filterOrder() {
    return 6;
}

@Override
public String filterType() {
    return "pre";
}

}

requestContext.unset () будет сбросить RequestContext для текущего запроса активных потоков. и вы можете указать код состояния ответа.

0
ответ дан FCR 21 August 2018 в 11:44
поделиться

Добавьте в свой метод run следующее: он решит эту проблему

ctx.setSendZuulResponse(false);
ctx.setResponseStatusCode(401);
4
ответ дан Michał Turczyn 21 August 2018 в 11:44
поделиться
Другие вопросы по тегам:

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