我正在从事一个Spring Boot项目,我应该通过Spring Cloud使用Feign调用rest api,我可以毫无问题地使用feignClient调用rest api, 现在我调用的其余api需要一个JWT才能使用它,以便从我的代码发送一个JWT,我使用了RequestInterceptor,这是我的代码:
class AuthInterceptor implements RequestInterceptor {
@Override
public void apply(RequestTemplate template) {
template.header("Authorization", "Bearer eyJraWQiOiJOcTVZWmUwNF8tazZfR3RySDZkenBWbHhkY1uV_1wSxWPGZui-t1Zf2BkbqZ_h44RkjVtQquIe0Yz9efWS6QZQ");
}
}
我在代码中手动放置了JWT,这很好...
我的问题是:JWT在30分钟后过期,我应该手动调用另一个生成JWT的rest api,然后将其硬编码到我的代码中...
我的问题是:有什么解决方案可以以编程方式调用生成JWT的api,然后将此JWT注入到Interceptor中?
谢谢。
最好的问候。
答案 0 :(得分:0)
从当前的 HttpServletRequest 标头中获取令牌。
public void apply(RequestTemplate template) {
HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.currentRequestAttributes())
.getRequest();
String jwtToken = request.getHeader(HttpHeaders.AUTHORIZATION);
if (jwtToken != null) {
template.header(HttpHeaders.AUTHORIZATION, jwtToken);
}
}