Spring-boot Zuul: передача идентификатора пользователя между микросервисами
У меня есть прокси Zuul Gateway, где я проверяю авторизацию токена, полученного от пользователя. Теперь, когда этот запрос передается другим микросервисам для получения пользовательских данных, пользовательская информация должна передаваться от шлюза к микросервису.
Прямо сейчас я добавил идентификатор пользователя в заголовок запроса и получаю его на соответствующем контроллере микросервиса, используя API header
аннотаций.
Это правильный способ передачи пользовательской информации. Есть ли другой лучший способ?
1 ответ
В случае, если кто-то все еще сталкивается с этой проблемой,
В Zuul Proxy добавьте заголовок в RequestContext, как показано ниже:
userId = jwtTokenUtil.getUsernameFromToken(jwtToken);
RequestContext ctx = RequestContext.getCurrentContext();
ctx.addZuulRequestHeader("userId", userId);
А затем в соответствующих микросервисах напишите собственный фильтр и извлеките значение, как показано ниже.
@Component
public class MyFilter extends OncePerRequestFilter {
@Override
protected void doFilterInternal(HttpServletRequest request,
HttpServletResponse response,
FilterChain filterChain)
throws ServletException, IOException {
String userId = request.getHeaders("userId").nextElement();
logger.info("userId: "+userId);
filterChain.doFilter(request, response);
}
}