欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

基于spring-security 401 403錯(cuò)誤自定義處理方案

 更新時(shí)間:2021年07月26日 15:41:30   作者:PolarisHuster  
這篇文章主要介紹了基于spring-security 401 403錯(cuò)誤自定義處理方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

spring-security 401 403錯(cuò)誤自定義處理

為了返回給前端統(tǒng)一的數(shù)據(jù)格式,

一般所有的數(shù)據(jù)都會(huì)以類(lèi)似下面的方式返回:

public class APIResultDto<T> {
    /**
     * 狀態(tài)碼:-1代表成功,具體參考APIErrorCode類(lèi)
     */
    private int er;
 
    /**
     * 狀態(tài)描述,可以自行設(shè)置或使用APIErrorCode類(lèi)中默認(rèn)描述
     */
    private String erMessage;
 
    /**
     * 實(shí)際返回實(shí)體,isSuccess()返回true時(shí)該字段有效
     */
    private T items;
}

但是一些框架,比如本文要說(shuō)的spring-security是不按照我們自定義規(guī)范處理的,幸運(yùn)的是spring-security框架給了我們可以定制化的地方,只需繼承

ResourceServerConfigurerAdapter

重寫(xiě)

public void configure(ResourceServerSecurityConfigurer resources) throws Exception

方法即可,在里面添加自定義的針對(duì)授權(quán)時(shí)返回的401以及403錯(cuò)誤碼,

具體如下:

@Autowired
    private AccessDeniedHandler accessDeniedHandler;
    @Autowired
    private AuthenticationEntryPoint authenticationEntryPoint;
 
    @Override
    public void configure(ResourceServerSecurityConfigurer resources) {
        resources.authenticationEntryPoint(authenticationEntryPoint);
        resources.accessDeniedHandler(accessDeniedHandler);
    }

里面涉及到的AccessDeniedHandler以及AuthenticationEntryPoint

如下所示:

@Component
public class CustomizedAuthenticationEntryPoint implements AuthenticationEntryPoint {
 
    @Override
    public void commence(HttpServletRequest request, HttpServletResponse response,
                         AuthenticationException authException) throws IOException, ServletException {
        response.setContentType("application/json;charset=UTF-8");
        
         //按照系統(tǒng)自定義結(jié)構(gòu)返回授權(quán)失敗
response.getWriter().write(JSON.toJSONString(APIResultDto.failed(APIErrorCode.AUTH_FAILED)));
    }
}
@Component
public class CustomAccessDeniedHandler implements AccessDeniedHandler {
 
    @Override
    public void handle(HttpServletRequest request, HttpServletResponse response, AccessDeniedException accessDeniedException) throws IOException, ServletException {
        response.setContentType("application/json;charset=UTF-8");
        
          //按照系統(tǒng)自定義結(jié)構(gòu)返回授權(quán)失敗
 response.getWriter().write(JSON.toJSONString(APIResultDto.failed(APIErrorCode.AUTH_FAILED)));
    }
}

關(guān)于狀態(tài)碼401與403區(qū)別

401 表示用戶(hù)沒(méi)有權(quán)限(令牌,用戶(hù)名,密碼錯(cuò)誤)

403 表示用戶(hù)有權(quán)限,只是訪(fǎng)問(wèn)是被禁止的(可以理解為,用戶(hù)有權(quán)限,但是某些目錄禁止訪(fǎng)問(wèn))

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 詳解如何在SpringBoot中自定義參數(shù)解析器

    詳解如何在SpringBoot中自定義參數(shù)解析器

    這篇文章主要為大家詳細(xì)介紹了如何在SpringBoot中實(shí)現(xiàn)自定義參數(shù)解析器,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)或工作有一定幫助,需要的可以參考一下
    2022-05-05
  • Java中的集合工具類(lèi)Collections詳解

    Java中的集合工具類(lèi)Collections詳解

    這篇文章主要介紹了Java中的集合工具類(lèi)Collections詳解,java.utils.Collections是集合工具類(lèi),用來(lái)對(duì)集合進(jìn)行操作,不是Collection集合的根接口,這個(gè)要區(qū)分開(kāi)來(lái),需要的朋友可以參考下
    2024-01-01
  • SpringBoot使用JavaCV處理rtsp流的示例代碼

    SpringBoot使用JavaCV處理rtsp流的示例代碼

    這篇文章主要為大家詳細(xì)介紹了SpringBoot使用JavaCV處理rtsp流,文中的示例代碼講解詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴可以跟隨小編一起了解一下
    2024-02-02
  • Java使用正則表達(dá)式檢索、替換String中特定字符和正則表達(dá)式的一切

    Java使用正則表達(dá)式檢索、替換String中特定字符和正則表達(dá)式的一切

    這篇文章主要給大家介紹了關(guān)于Java使用正則表達(dá)式檢索、替換String中特定字符和正則表達(dá)式的一切,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • 深入理解java動(dòng)態(tài)代理機(jī)制

    深入理解java動(dòng)態(tài)代理機(jī)制

    本篇文章主要介紹了深入理解java動(dòng)態(tài)代理機(jī)制,詳細(xì)的介紹動(dòng)態(tài)代理有哪些應(yīng)用場(chǎng)景,什么是動(dòng)態(tài)代理,怎樣使用,它的局限性在什么地方?有興趣的可以了解一下。
    2017-02-02
  • 深入解析Java中反射中的invoke()方法

    深入解析Java中反射中的invoke()方法

    最近復(fù)習(xí)了一下Java反射的使用,正好了解一下Java中反射中的invoke()方法,稍微整理精簡(jiǎn)一下做下分享,感興趣的可以了解一下
    2021-06-06
  • Java?九宮重排(滿(mǎn)分解法)

    Java?九宮重排(滿(mǎn)分解法)

    本文主要介紹了Java?九宮重排(滿(mǎn)分解法),文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-05-05
  • Springmvc ViewResolver設(shè)計(jì)實(shí)現(xiàn)過(guò)程解析

    Springmvc ViewResolver設(shè)計(jì)實(shí)現(xiàn)過(guò)程解析

    這篇文章主要介紹了Springmvc ViewResolver設(shè)計(jì)實(shí)現(xiàn)過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-10-10
  • java中Calendar.add()方法的使用

    java中Calendar.add()方法的使用

    本文主要介紹了java中Calendar.add()方法的使用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-04-04
  • Idea servlet映射方法優(yōu)缺點(diǎn)對(duì)比

    Idea servlet映射方法優(yōu)缺點(diǎn)對(duì)比

    這篇文章主要介紹了Idea servlet映射方法優(yōu)缺點(diǎn)對(duì)比,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-11-11

最新評(píng)論