亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

是否可以在 Spring Boot 中配置 OAuth2 以使用 JSON 而不是 HTML 來響應

是否可以在 Spring Boot 中配置 OAuth2 以使用 JSON 而不是 HTML 來響應

炎炎設計 2023-12-04 15:03:58
我的 Spring Boot 應用程序用于OAuth2安全和令牌管理。我正在使用無效令牌查詢我的 REST 端點之一,以使用 Postman 測試其響應。端點正確響應 401 InvalidTokenException,但當我希望它響應 JSON 時,響應內容是 HTML。這可以通過代碼完成嗎?響應示例<InvalidTokenException>      <error>invalid_token</error>      <error_description>Access token expired: … my token… </error_description>      </InvalidTokenException>
查看完整描述

2 回答

?
Cats萌萌

TA貢獻1805條經驗 獲得超9個贊

詳細說明 zfChaos 的答案,這是一個很好的線索,但沒有提供足夠的信息來使響應成為 JSON 響應:


您還應該設置內容類型和字符編碼。然后,編寫您的 JSON 響應(在本例中我使用了一個簡單的 String,當然使用類和 an 會更方便ObjectMapper)。


這是一個完整的例子:


@Configuration

public class SecurityConfiguration extends WebSecurityConfigurerAdapter {


    @Override

    public void configure(HttpSecurity httpSecurity) throws Exception {

        httpSecurity

                .oauth2Login(login -> login

                        .failureHandler((request, response, exception) -> {

                            response.setContentType("application/json");

                            response.setStatus(401);

                            response.setCharacterEncoding("UTF-8");

                            response.getWriter().write("{ \"msg\": \"foo\" }");

                        })

                );

    }

}


查看完整回答
反對 回復 2023-12-04
?
慕工程0101907

TA貢獻1887條經驗 獲得超5個贊

將自定義添加AuthenticationFailureHandler到您的安全配置,然后在自定義實現中準備響應:


http.oauth2Login()

    .failureHandler(customFailureHandler)

失敗處理程序示例:


public class CustomFailureHandler extends SimpleUrlAuthenticationFailureHandler {

    @Override

    public void onAuthenticationFailure(HttpServletRequest request, HttpServletResponse response, AuthenticationException exception) throws IOException {

        response.sendError(401, "XML HERE");

    }

}


查看完整回答
反對 回復 2023-12-04
  • 2 回答
  • 0 關注
  • 161 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號