我有弹簧控制器方法。它旨在以编程方式注册用户(通过产品内其他系统的单一登录流程)。它的工作原理是获取用户数据,验证它,创建用户帐户(如果不存在),将共享令牌传送回另一个系统,然后验证用户。正在进行握手过程,但要解决问题的根源。如果用户不在系统中,我希望使用相同的方法返回字符串,如果已经注册,则返回ModelAndView
。
可能的解决方案(但不能执行):
HttpURLConnection
输入流读取返回的字符串(在第一次用户的情况下)。因此,如果有一种方法将数据放入ModelAndView对象,然后使用输入流读取它,那么我就设置了。@ResponseBody String
来返回字符串并使用输入流将其读取,但是,当它是现有用户时,我无法返回视图。理想情况下,我会返回一个模型和视图,但另一个系统不是spring,所以它不会理解它。
总而言之,一种做两件事的方法,如果用户是第一次用户,它将字符串返回给具有加密令牌的另一个系统,另一个系统将在iframe中使用该字符串来验证用户。
需要在一个案例中返回一个字符串,以便在另一个系统中使用输入流读取器读取,并且在现有用户的情况下,需要返回一个视图以使用spring本身读取。
如果有任何不清楚的地方,请告诉我。
编辑:有没有办法返回一个足够通用的http响应(类似于http servlet响应),可以在spring内外工作。这也将解决我的问题。
答案 0 :(得分:4)
一个方法只能有一个返回类型,因此您需要将请求转发给另一个控制器方法。哪种控制器方法可以取决于您的身份验证结果...
@RequestMapping ...
public String handleRequest() {
if(valid){
return "forward:/path_to_my_another_controller";
}else {
return "forward:/somewhere_else";
}
}