Ho un metodo nel mio controller come questo:Spring 3.x - Come faccio a reindirizzare da una mappatura che restituisce i dati?
@RequestMapping(value="getData", method=RequestMethod.GET)
@ResponseBody
public List<MyDataObj> getData()
{
return myService.getData();
}
I dati vengono restituiti come JSON o xsl, a seconda della richiesta.
Se la persona che effettua la richiesta non è autorizzato ad accedere ai dati che ho bisogno di reindirizzare l'utente a una pagina "non autorizzato", in modo da qualcosa di simile:
@RequestMapping(value="getData", method=RequestMethod.GET)
@ResponseBody
public List<MyDataObj> getData()
{
if (!isAuthorized())
{
// redirect to notAuthorized.jsp
}
return myService.getData();
}
Tutti gli esempi che ho visto l'utilizzo di Spring richiede il metodo per restituire uno String
o uno ModelAndView
. Ho pensato di utilizzare HttpServletResponse.sendRedirect()
ma tutti i miei JSP sono in WEB-INF e non possono essere raggiunti direttamente.
Come negare l'accesso con garbo all'URL della richiesta dati?
Questo non ha funzionato perché ho il mio metodo annotato con '@ ResponseBody'. Tutto ciò che ho ottenuto con l'oggetto 'RedirectView' in JSON. Sto guardando il 'HandlerInterceptor' ora. – Paul
@Paul: buon punto. Ho modificato la mia risposta per rimuovere quel bit. – skaffman
Ho dovuto rielaborare la mia struttura di directory un po '(avevo tutto sotto '/') ma usare un intercettore funzionava alla grande, grazie. – Paul