最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

基于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)文章

  • SparkSQl簡(jiǎn)介及運(yùn)行原理

    SparkSQl簡(jiǎn)介及運(yùn)行原理

    Spark SQL就是將SQL轉(zhuǎn)換成一個(gè)任務(wù),提交到集群上運(yùn)行,類(lèi)似于Hive的執(zhí)行方式。今天通過(guò)本文給大家分享SparkSQl簡(jiǎn)介及運(yùn)行原理,感興趣的朋友跟隨小編一起看看吧
    2021-08-08
  • 解決spring-boot2.0.6中webflux無(wú)法獲得請(qǐng)求IP的問(wèn)題

    解決spring-boot2.0.6中webflux無(wú)法獲得請(qǐng)求IP的問(wèn)題

    這幾天在用 spring-boot 2 的 webflux 重構(gòu)一個(gè)工程,寫(xiě)到了一個(gè)需要獲得客戶(hù)端請(qǐng)求 IP 的地方,在寫(xiě)的過(guò)程中遇到很多問(wèn)題,下面小編通過(guò)一段代碼給大家介紹解決spring-boot2.0.6中webflux無(wú)法獲得請(qǐng)求IP的問(wèn)題,感興趣的朋友跟隨小編一起看看吧
    2018-10-10
  • application.yml文件中如何開(kāi)啟mybatis自動(dòng)駝峰映射

    application.yml文件中如何開(kāi)啟mybatis自動(dòng)駝峰映射

    這篇文章主要介紹了application.yml文件中開(kāi)啟mybatis自動(dòng)駝峰映射的方法,本文通過(guò)示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-08-08
  • SpringCloud使用Kafka Streams實(shí)現(xiàn)實(shí)時(shí)數(shù)據(jù)處理

    SpringCloud使用Kafka Streams實(shí)現(xiàn)實(shí)時(shí)數(shù)據(jù)處理

    使用Kafka Streams在Spring Cloud中實(shí)現(xiàn)實(shí)時(shí)數(shù)據(jù)處理可以幫助我們構(gòu)建可擴(kuò)展、高性能的實(shí)時(shí)數(shù)據(jù)處理應(yīng)用,Kafka Streams是一個(gè)基于Kafka的流處理庫(kù),本文介紹了如何在SpringCloud中使用Kafka Streams實(shí)現(xiàn)實(shí)時(shí)數(shù)據(jù)處理,需要的朋友可以參考下
    2024-07-07
  • Spring Boot 整合 Druid過(guò)程解析

    Spring Boot 整合 Druid過(guò)程解析

    這篇文章主要介紹了Spring Boot 整合 Druid過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-11-11
  • IntelliJ IDEA打開(kāi)多個(gè)Maven的module且相互調(diào)用代碼的方法

    IntelliJ IDEA打開(kāi)多個(gè)Maven的module且相互調(diào)用代碼的方法

    這篇文章主要介紹了IntelliJ IDEA打開(kāi)多個(gè)Maven的module且相互調(diào)用代碼的方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2019-02-02
  • 一文讀懂IDEA里面的Artifact到底是什么

    一文讀懂IDEA里面的Artifact到底是什么

    這篇文章主要介紹了IDEA里面的Artifact到底是什么,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2021-01-01
  • Mybatis配置之<environments>配置元素詳解

    Mybatis配置之<environments>配置元素詳解

    這篇文章主要介紹了Mybatis配置之<environments>配置元素,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-01-01
  • Spring AOP 切面@Around注解的用法說(shuō)明

    Spring AOP 切面@Around注解的用法說(shuō)明

    這篇文章主要介紹了Spring AOP 切面@Around注解的用法說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-02-02
  • Spring Boot集成教程之異步調(diào)用Async

    Spring Boot集成教程之異步調(diào)用Async

    在項(xiàng)目中,當(dāng)訪(fǎng)問(wèn)其他人的接口較慢或者做耗時(shí)任務(wù)時(shí),不想程序一直卡在耗時(shí)任務(wù)上,想程序能夠并行執(zhí)行,我們可以使用多線(xiàn)程來(lái)并行的處理任務(wù),也可以使用spring提供的異步處理方式@Async。需要的朋友們下面來(lái)一起看看吧。
    2018-03-03

最新評(píng)論

青田县| 黎城县| 锡林郭勒盟| 哈巴河县| 长乐市| 凤阳县| 西贡区| 吐鲁番市| 龙山县| 正阳县| 团风县| 镇巴县| 江孜县| 新泰市| 昌乐县| 毕节市| 邢台县| 会同县| 沂源县| 宁强县| 老河口市| 宁乡县| 东光县| 广东省| 汝南县| 商水县| 修武县| 泰和县| 凤台县| 鲁山县| 镇赉县| 祁门县| 石渠县| 西林县| 昆山市| 南投县| 洛南县| 岳阳县| 安宁市| 石泉县| 防城港市|