我正在尝试微服务架构,我遇到了一个问题。我有一个Zuul网关和客户端Web应用程序,在zuul网关中有登录表单和控制器。 Zuul application.yaml config中定义了到微服务的路由。微服务还将自己注册到eureka服务器。使用jdbcAuthentication对用户进行数据库身份验证。当用户在浏览器中输入http://localhost:8080地址时,zuul会显示登录表单。成功登录后,用户被重定向到主页(索引)控制器。此控制器还对位于zuul代理下的user-info微服务执行RestTemplate调用,其中地址http://localhost:8080/user/在config中定义为/ user route。然后,而不是来自微服务的json响应,我得到相同的登录表单html代码。如果我尝试从浏览器访问http://localhost:8080/user/休息端点,那么我会在JSON响应中获得一个带有属性的漂亮且清晰的对象。看起来RestTemplate丢失或没有通过身份验证或会话信息。我正在添加我的配置代码示例
ZUUL config
zuul:
routes:
user:
path: /user/**
serviceId: user-service
Zuul客户端Web应用程序控制器控制器
@Controller
public class IndexController{
@Autowired
private RestTemplate restTemplate;
@RequestMapping("/")
public String index(ModelMap model, HttpServletRequest request, HttpServletResponse response) {
Long userId = 2L;
String user = restTemplate.getForObject("http://localhost:8080/user/find/{id}", String.class, userId);
// this is the place where I get html code of login form instead of JSON
return "index";
}
}
用户微服务休息控制器
@RestController
public class UserController {
@Autowired
private IUserService userService;
@RequestMapping("find/{id}")
public ResponseEntity<User> findById(@PathVariable long id) {
return new ResponseEntity<>(userService.findById(id), HttpStatus.OK);
}
}
我希望我清楚地解释了我的情况。提前感谢您的帮助。