本文介紹了如何強制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?的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,