被调用模块未开启鉴权,fegin调用报401
时间: 2024-04-28 21:27:14 浏览: 75
如果被调用模块未开启鉴权,那么你需要在调用时手动添加鉴权信息。你可以通过在Feign客户端接口上添加请求头的方式进行鉴权。例如,你可以在Feign客户端接口上添加一个带有认证令牌的请求头,如下所示:
```java
@FeignClient(name = "example-client", url = "http://example.com", configuration = MyFeignConfiguration.class)
public interface ExampleClient {
@RequestMapping(method = RequestMethod.GET, value = "/example")
public String getExample(@RequestHeader("Authorization") String authorization);
}
```
在这个例子中,我们在Feign客户端接口的`getExample()`方法上添加了一个请求头`Authorization`,该请求头包含认证令牌。你需要在请求头中添加正确的认证令牌才能成功调用被调用模块的API。
相关问题
fegin 调用无鉴权的模块 401
关于 Feign 调用无鉴权的模块返回 401 的问题,通常有以下几种解决方案:
1. 在请求头中添加鉴权信息。可以通过自定义 Feign 的拦截器,在请求头中添加鉴权信息,具体实现可以参考 Feign 的官方文档。
2. 在请求时携带凭证。如果你使用的是 OAuth2 认证,可以在请求时携带 access_token 或者 refresh_token,以此来获取访问权限。
3. 绕过鉴权。如果你的应用场景中,无鉴权的模块对应的接口只是一些公开信息,可以考虑直接绕过鉴权。
需要注意的是,以上方案都需要根据具体的业务场景来选择,不能一概而论。
fegin 免鉴权调用
在 Feign 中实现免鉴权调用,可以通过以下几个步骤:
1. 在 Feign 的配置类中配置 `RequestInterceptor`,并在其中添加认证信息,示例如下:
```
@Configuration
public class FeignConfiguration {
@Bean
public RequestInterceptor requestInterceptor() {
return requestTemplate -> {
// 添加认证信息
requestTemplate.header("Authorization", "Bearer token");
};
}
}
```
2. 创建 Feign 接口时,通过 `@Headers` 注解指定接口方法的请求头部信息,示例如下:
```
@Headers("Content-Type: application/json")
@FeignClient(name = "example-service", configuration = FeignConfiguration.class)
public interface ExampleServiceClient {
@GetMapping("/example")
String getExample();
}
```
3. 在调用接口时,直接调用 Feign 接口的方法即可,如下所示:
```
@Autowired
private ExampleServiceClient exampleServiceClient;
public String callExampleService() {
return exampleServiceClient.getExample();
}
```
这样就实现了 Feign 免鉴权调用,当调用需要鉴权的接口时,会在请求头中自动添加认证信息。
阅读全文