我有一個彈簧控制器的方法。它意味着以編程方式註冊用戶(通過從產品內的另一個系統進行單點登錄)。它通過獲取用戶數據,驗證它,創建一個用戶帳戶(如果它不存在),向另一個系統傳回一個共享令牌,然後對用戶進行身份驗證來工作。有一個握手過程正在進行,但要解決問題的根本。如果用戶不存在於系統中,我想要相同的方法返回一個字符串,並且如果它們已經註冊,則返回ModelAndView
。
返回@ResponseBody在一個案例和ModelAndView在另一個
可能的解決方案(但不能執行它們):
- 返回的字符串(在第一時間用戶的情況下)將要使用
HttpURLConnection
輸入流中讀取。因此,如果有方法將數據放入ModelAndView對象中,然後使用輸入流讀取數據,那麼我就設置好了。 - 我可以返回字符串,並通過使返回類型爲
@ResponseBody String
使用輸入流來讀取它,但是,當它是現有用戶時,我無法返回視圖。
理想情況下,我會返回一個模型和視圖,但另一個系統不是彈簧,所以它不會理解它。總之,如果用戶是第一次使用用戶,那麼它會返回一個帶有加密令牌的另一個系統的字符串,而另一個系統將在iframe中使用該字符串來驗證用戶身份。
需要在一種情況下返回一個字符串,以便在另一個系統中使用輸入流讀取器進行讀取,而在現有用戶的情況下,需要使用spring本身返回讀取視圖。
請讓我知道如果有任何不清楚。
編輯:有沒有辦法返回一個足夠通用的http響應(類似http servlet響應),並且可以在spring和spring之外使用。這也將解決我的問題。
你如何從你的'String'返回到iframe頁面進行身份驗證? (是否有可能返回'ModelAndView'然後使用JS解析它以將數據導入到其他系統?) – zbrunson
@zshooter,當我返回一個字符串時,我不去iframe,因爲它仍然爲用戶保存數據。會發生什麼是使用'HttpURLConnection'完成發佈請求,然後讀取響應。 iframe進入第二步。 – Isaac