OpenFeign,通过SpringSecurity的UserDetailsService实现类中的loadUserByUsername方法内,不能调用成功;在通过Controller的调用时是成功的
UserDetailsService实现类代码
@Service
public class MyUserDetailsService implements UserDetailsService {
@Override
public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
Object user = userClient.login(username);
......
}
@Resource
private UserClient userClient;
}
UserClient代码
@FeignClient(name = "user-service-provider", fallback = UserClientFallback.class)
public interface UserClient {
@GetMapping("/login/username/{username}")
Object login(@PathVariable String username);
}
UserClientFallback代码
public class UserClientFallback implements MSUserClient {
@Override
public Object login(String username) {
return "Error";
}
}
开源包版本信息
<properties>
<maven.compiler.source>17</maven.compiler.source>
<maven.compiler.target>17</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<spring.cloud.alibaba.version>2022.0.0.0</spring.cloud.alibaba.version>
<spring.cloud.version>4.0.0</spring.cloud.version>
</properties>
......
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
<version>4.0.0</version>
<exclusions>
<exclusion>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-ribbon</artifactId>
</exclusion>
</exclusions>
</dependency>
......