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

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

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

spring-security 401 403錯誤自定義處理

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

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

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

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

ResourceServerConfigurerAdapter

重寫

public void configure(ResourceServerSecurityConfigurer resources) throws Exception

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

具體如下:

@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)));
    }
}

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

401 表示用戶沒有權(quán)限(令牌,用戶名,密碼錯誤)

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

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

相關文章

  • SparkSQl簡介及運行原理

    SparkSQl簡介及運行原理

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

    解決spring-boot2.0.6中webflux無法獲得請求IP的問題

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

    application.yml文件中如何開啟mybatis自動駝峰映射

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

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

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

    Spring Boot 整合 Druid過程解析

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

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

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

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

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

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

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

    Spring AOP 切面@Around注解的用法說明

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

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

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

最新評論

若尔盖县| 扶绥县| 榆林市| 玉门市| 古浪县| 大英县| 海阳市| 大悟县| 淮阳县| 伊通| 乌拉特前旗| 四会市| 文登市| 田东县| 乌鲁木齐县| 遂昌县| 安丘市| 崇礼县| 南岸区| 诸城市| 定西市| 黄骅市| 凤翔县| 临泽县| 沧州市| 南和县| 江山市| 龙门县| 邻水| 彰武县| 苍南县| 旬邑县| 青河县| 永德县| 化州市| 衢州市| 靖江市| 会同县| 牙克石市| 鄱阳县| 龙里县|