How to force Spring Security OAuth 2 to use JSON instead of XML?(如何强制Spring Security OAuth 2使用JSON而不是XML?)
问题描述
我已经创建了Spring MVC应用程序并设置了Spring Security OAuth 2。 从浏览器调用方法时,我得到了XML:
<oauth>
<error_description>
Full authentication is required to access this resource
</error_description>
<error>unauthorized</error>
</oauth>
浏览器发送以下标题:
Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
当我设置json Accept Header时,我得到JSON。我需要强制我的授权服务器始终发送JSON。还没有找到任何解决方案。谢谢。
推荐答案
for Spring Security OAuth异常使用DefaultOAuth2ExceptionRender呈现
它将根据提供的MessageConverters匹配接收到的Accept HTTP标头。在您的例子中,Spring Boot似乎已经自动分配了XML和JSON MessageConverter。此行为被确认为基于Accept标头,您正在接收以正确的Content-Type呈现的异常
如果没有Accept标头,DefaultOAuth2ExceptionRenderer默认为Accept:*,并且通常第一个响应的MessageConverter是xml one。
如果您的应用程序中不需要XML,您需要了解为什么会支持它(很可能您的类路径中有一个FasterXML Jackson)。
如果您想同时支持两者,但又想使用JSON默认设置,则需要编写您自己的OAuth2ExceptionRendrer实现,并确保在JSON中呈现异常。更好的方法是将您的Iml挂钩到Content NeGoationManager,并将MediaType解析委托给它。
有关ContentNeGoationManager的更多信息,请查看此链接:
https://spring.io/blog/2013/05/11/content-negotiation-using-spring-mvc
这篇关于如何强制Spring Security OAuth 2使用JSON而不是XML?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:如何强制Spring Security OAuth 2使用JSON而不是XML?
基础教程推荐
- 如何对 HashSet 进行排序? 2022-01-01
- 在螺旋中写一个字符串 2022-01-01
- Java 中保存最后 N 个元素的大小受限队列 2022-01-01
- 首次使用 Hadoop,MapReduce Job 不运行 Reduce Phase 2022-01-01
- 如何使用 Eclipse 检查调试符号状态? 2022-01-01
- 如何强制对超级方法进行多态调用? 2022-01-01
- 如何在不安装整个 WTP 包的情况下将 Tomcat 8 添加到 Eclipse Kepler 2022-01-01
- 如何使用 Stream 在集合中拆分奇数和偶数以及两者的总和 2022-01-01
- 由于对所需库 rt.jar 的限制,对类的访问限制? 2022-01-01
- Spring Boot Freemarker从2.2.0升级失败 2022-01-01