Spring 3.x - 如何从返回数据的映射重定向?

Pau*_*aul 8 java redirect spring spring-mvc

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

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

数据以JSON或xsl的形式返回,具体取决于请求.

如果发出请求的人无权访问数据,我需要将用户重定向到"未授权"页面,如下所示:

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

我使用Spring看到的所有示例都要求方法返回a String或a ModelAndView.我考虑过使用HttpServletResponse.sendRedirect()但是我的所有JSP都在WEB-INF下,无法直接访问.

如何拒绝优雅地访问数据请求URL?

ska*_*man 5

更优雅的解决方案可能是使用HandlerInterceptor会检查授权,阻止任何不允许继续的请求.如果请求随后到达您的控制器,您可以认为它没问题.


Ser*_*sik 5

答案如下。但是您的特定情况宁愿用其他方法处理。

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