Zuul RestTemplate中的客户端应用程序获取登录页面而不是JSON

时间:2018-03-09 07:36:09

标签: spring-boot microservices spring-cloud resttemplate spring-cloud-netflix

我正在尝试微服务架构,我遇到了一个问题。我有一个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);
    }
}

我希望我清楚地解释了我的情况。提前感谢您的帮助。

0 个答案:

没有答案