2011-04-29 1 views
4

J'essayais d'écrire un filtre de session pour centraliser la vérification des autorisations dans mon application Web du moteur de l'application.Impossible d'accéder aux données de session dans le filtre de servlet sur le serveur de développement du moteur de l'application

Mon filtre ressemble à ceci:

@Override 
public void doFilter(ServletRequest request, ServletResponse response, 
     FilterChain chain) throws IOException, ServletException { 
    HttpServletRequest httpReq = (HttpServletRequest) request; 
    HttpServletResponse httpResp = (HttpServletResponse) request; 
    HttpSession session = httpReq.getSession(); 

    httpReq.setCharacterEncoding("UTF-8"); 
    httpResp.setCharacterEncoding("UTF-8"); 
    httpResp.setContentType("application/json"); 

    Boolean isAuthorized = (Boolean) session.getAttribute("isAuthorized"); 

    if (!isAuthorized || isAuthorized == null) { 
     httpResp.sendError(HttpServletResponse.SC_UNAUTHORIZED); 
    } else { 
     chain.doFilter(request, response); 
    } 
} 

Mais quand je lance le serveur moteur app dev Je saluai cette exception: « org.mortbay.jetty.request ne peut pas être jeté à javax.servlet .http.httpservletresponse ". Qu'est-ce que je fais mal?

+5

'HttpServletResponse httpResp = (HttpServletResponse) request'; Relisez cette ligne. – asgs

Répondre

14

Vous essayez de lancer l'objet "request" en réponse.

change comme suit

HttpServletResponse httpResp = (HttpServletResponse) response; 
+0

wow, je me demande comment je n'ai pas remarqué ça – NewlessClubie

Questions connexes