【发布时间】:2017-10-18 07:52:51
【问题描述】:
我对微服务和 Spring 有点陌生。我有 Spring Cloud 微服务(端口:8xxx-8xxx),Zuul 网关在端口 9000 上运行。UI 服务上的控制器中有一个方法,它应该进行登录,然后返回 index.html 页面:
@RequestMapping(value="/do-login", method = RequestMethod.POST)
public RedirectView doLogin (@ModelAttribute("authEntity") final AuthEntity authEntity, final Model model) {
model.addAttribute(VERSION, applicationVersion);
model.addAttribute("authEntity", new AuthEntity());
authenticatedStatus = true;
model.addAttribute(AUTHENTICATED, authenticatedStatus);
return new RedirectView("index");
}
问题是,当上述方法完成时,它返回一个微服务本身的 url localhost:8888/index 而不是 localhost:9000/services/ui/。
如果我使用更简单的方法:
@RequestMapping(value="/do-login", method = RequestMethod.POST)
public String doLogin (@ModelAttribute("authEntity") final AuthEntity authEntity, final Model model) {
model.addAttribute(VERSION, applicationVersion);
model.addAttribute("authEntity", new AuthEntity());
authenticatedStatus = true;
model.addAttribute(AUTHENTICATED, authenticatedStatus);
return "index";
}
这会正确返回网关 localhost:9000/services/ui/do-login 的 URL,但我不需要 /do-login。
也许我可以去掉网址中的/do-login/ 部分?或者也许有解决错误重定向的方法?
提前致谢!
【问题讨论】:
标签: java spring-mvc spring-cloud netflix-zuul