簡體   English   中英

Spring 3.x - 如何從返回數據的映射重定向?

[英]Spring 3.x - how do I redirect from a mapping that returns data?

我的控制器中有一個方法,如下所示:

@RequestMapping(value="getData", method=RequestMethod.GET)
@ResponseBody
public List<MyDataObj> getData()
{
  return myService.getData();
}

數據以JSON或xsl的形式返回,具體取決於請求。

如果發出請求的人無權訪問數據,我需要將用戶重定向到“未授權”頁面,如下所示:

@RequestMapping(value="getData", method=RequestMethod.GET)
@ResponseBody
public List<MyDataObj> getData()
{
  if (!isAuthorized())
  {
    // redirect to notAuthorized.jsp
  }
  return myService.getData();
}

我使用Spring看到的所有示例都要求該方法返回StringModelAndView 我想過使用HttpServletResponse.sendRedirect()但我的所有JSP都在WEB-INF下,無法直接訪問。

如何拒絕優雅地訪問數據請求URL?

更優雅的解決方案可能是使用HandlerInterceptor來檢查授權,阻止任何不允許繼續的請求。 如果請求隨后到達您的控制器,您可以認為它沒問題。

答案如下。 但是你的具體情況寧願用其他方法處理。

@RequestMapping(value = "/someUrl", method = RequestMethod.GET)
@ResponseBody
public Response someMethod(String someData, HttpServletResponse response){
    if(someData=="redirectMe"){
       response.sendRedirect(ppPageUrl);
    }
 ...
}

另一種方法是過濾。 您可以將所有安全邏輯移動到過濾器中並在控制器中保留干凈的代碼

很簡單:

將錯誤狀態發送到客戶端

response.setStatus(HttpServletResponse.SC_NO_CONTENT);

和你一起處理ajax回調處理程序和重定向。 :)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM