2012-03-15 1 views
0

J'ai un JacksonMessageConverter dans mon application Spring pour retourner la réponse JSON. Mais avant que le JSON ne soit retourné, je voudrais altérer le JSON comme indiqué dans Ajax Security - Preventing JSON hijacking. Est-il possible de le faire en utilisant un convertisseur de messages?Spring JSON réponse à l'altération de JacksonMessageConverter

Mise à jour

cherche une solution similaire à ce spring prefixjson with responsebody mais j'ai déjà la configuration configuré correctement. PFB

<bean id="jacksonMessageConverter" 
class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter"> 
    <property name="prefixJson" value="true" /> 
    <property name="supportedMediaTypes" value = "text/plain;charset=UTF-8" /> 
</bean> 
<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"> 
    <property name="messageConverters"> 
     <list> 
      <ref bean="jacksonMessageConverter"/> 
     </list> 
    </property> 
</bean> 

Mais toujours le JSON retourné n'est pas préfixé par "& & {}".

REMARQUE: je voudrais utiliser un préfixe différent pour le JSON comme expliqué dans Ajax Security - Preventing JSON hijacking mais même le support par défaut fourni dans Jackson ne semble pas fonctionner. Des idées?

Répondre

1

Essayez de débogage MappingJacksonHttpMessageConverter pour voir, si prefixJson égal vrai. Sinon, votre grain n'est pas injecté correctement. Si oui, regardez dans la méthode writeInternal() de la classe MappingJacksonHttpMessageConverter. IT faire clairement ce que vous avez besoin:

try { 
     if (this.prefixJson) { 
      jsonGenerator.writeRaw("{} && "); 
     } 
     this.objectMapper.writeValue(jsonGenerator, o); 
    } 

Si vous voulez ajouter le préfixe personnalisé, vous devez passer outre writeInternal() et de le faire là-bas.

+0

Merci pour la réponse. J'essaie cette approche actuellement. Mettra à jour le post avec la réponse une fois terminé. – Raghav

1

approche plus facile serait d'étendre MappingJacksonHttpMessageConverter et remplacer la méthode writeInternal pour faire des choses comme préfixage personnalisé, etc

+0

+1 pour la suggestion – Raghav

Questions connexes