若依框架远程调用没有访问权限
时间: 2023-11-07 13:06:14 浏览: 33
若依框架在进行远程调用时,默认没有将请求头继续往下传递。而在调用接入认证的微服务时,必须携带JWT令牌才可以访问。如果没有携带令牌就进行远程调用,就会出现403错误,表示没有访问权限。
为了解决这个问题,你可以使用Feign的拦截器来进行处理。通过拦截所有的Feign远程调用,在进行远程调用时拦截住请求,并将请求头中的Authorization继续往下传递。这样就能够携带JWT令牌进行远程调用,解决了访问权限的问题。
以下是示例代码,你可以将其添加到你的项目中:
```java
@Component
public class FeignInterceptor implements RequestInterceptor {
@Override
public void apply(RequestTemplate template) {
RequestAttributes requestAttributes = RequestContextHolder.getRequestAttributes();
if (requestAttributes != null) {
HttpServletRequest request = ((ServletRequestAttributes) requestAttributes).getRequest();
String authorization = request.getHeader("Authorization");
template.header("Authorization", authorization);
}
}
}
```
另外,你提到在security的配置文件中已经放行了请求,但仍然报403错误。可能是因为你只放行了GET请求下的访问路径,而没有添加POST、PUT等请求类型的antMatchers。你可以再添加这些请求类型的antMatchers,这样所有接口就能正常访问了。
希望以上解答对你有帮助!如果你还有其他问题,请继续提问。