2010-12-09 9 views
-1

Je construis un AuthenticationSuccessHandler personnalisé afin que les utilisateurs peuvent se connecter en utilisant Ajax utiliser aswell une connexion normale (pour les utilisateurs avec JavaScript désactivé). Pour vérifier s'il s'agit d'un appel ajax ou d'un appel normal, j'ai envoyé un en-tête de demande supplémentaire. S'il s'agit d'un appel Ajax je veux retourner un code différent comme sur la demande normale. Ce résultat doit provenir d'un fichier jsp. Je pourrais renvoyer l'URL mais que l'utilisateur doit faire une autre demande pour obtenir les données. Comment puis-je lire la sortie du fichier jsp à partir de mon code ou est-ce un mauvais design?Comment retourner des réponses différentes avec une connexion normale et ajax en sécurité ressort 3

Voici comment je gère la requête.

@Override 
public void onAuthenticationSuccess(HttpServletRequest request, 
    HttpServletResponse response, Authentication auth) throws IOException, 
    ServletException{ 
    if ("true".equals(request.getHeader("X-Ajax-call"))) { 
     response.getWriter().print("Output of jsp file should go here?"); 

     response.getWriter().flush(); 
    } else { 
     defaultHandler.onAuthenticationSuccess(request, response, auth); 
    } 
} 
+1

servletRequest.getHeader (de X_REQUESTED_WITH) = null || servletRequest.getParameter (X_REQUESTED_WITH)! = null; va vérifier si la demande est ajax ou pas, pas besoin d'envoyer des en-têtes supplémentaires –

Répondre

3

Tu ne peux pas simplement transmettre la demande:

request.getRequestDispatcher("myFile.jsp").forward(request, repsponse); 
+0

Grande réponse, merci. –

Questions connexes