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

shiro整合swagger的注意事項

 更新時間:2021年05月10日 09:42:25   作者:開發(fā)架構二三事  
這篇文章主要介紹了shiro整合swagger需要注意的地方,幫助大家更好的理解和學習使用shiro框架,感興趣的朋友可以了解下

swagger是一個很好的rest api管理工具,最近又整合了基于shiro的權限控制,出問題了,http://localhost:8080/swagger-ui.html訪問不正常,問題肯定是shiro沒放行導致的

shiro 配置

在shiroFilter中的配置如下:

@Bean(name = "shiroFilter")
    public ShiroFilterFactoryBean shiroFilterFactoryBean(SecurityManager securityManager) {
        ShiroFilterFactoryBean shiroFilterFactoryBean = new ShiroFilterFactoryBean();
        //Shiro的核心安全接口,這個屬性是必須的
        shiroFilterFactoryBean.setSecurityManager(securityManager);
        Map<String, Filter> filterMap = new LinkedHashMap<>();
        filterMap.put("authc", new AjaxPermissionsAuthorizationFilter());
        shiroFilterFactoryBean.setFilters(filterMap);
        /*定義shiro過濾鏈  Map結構
         * Map中key(xml中是指value值)的第一個'/'代表的路徑是相對于HttpServletRequest.getContextPath()的值來的
         * anon:它對應的過濾器里面是空的,什么都沒做,這里.do和.jsp后面的*表示參數,比方說login.jsp?main這種
         * authc:該過濾器下的頁面必須驗證后才能訪問,它是Shiro內置的一個攔截器org.apache.shiro.web.filter.authc.FormAuthenticationFilter
         */
        Map<String, String> filterChainDefinitionMap = new LinkedHashMap<>();
         /* 過濾鏈定義,從上向下順序執(zhí)行,一般將 / ** 放在最為下邊:這是一個坑呢,一不小心代碼就不好使了;
          authc:所有url都必須認證通過才可以訪問; anon:所有url都都可以匿名訪問 */
        filterChainDefinitionMap.put("/", "anon");
        filterChainDefinitionMap.put("/static/**", "anon");
        filterChainDefinitionMap.put("/login/auth", "anon");
        filterChainDefinitionMap.put("/login/logout", "anon");
        filterChainDefinitionMap.put("/error", "anon");
        filterChainDefinitionMap.put("/**", "authc");
        shiroFilterFactoryBean.setFilterChainDefinitionMap(filterChainDefinitionMap);
        return shiroFilterFactoryBean;
    }

首先 常規(guī)的過濾放行如下:

filterChainDefinitionMap.put("/swagger-ui.html", "anon");
filterChainDefinitionMap.put("/swagger-resources", "anon");
filterChainDefinitionMap.put("/v2/api-docs", "anon");
filterChainDefinitionMap.put("/webjars/springfox-swagger-ui/**", "anon");

重新打開shiro,運行,swagger2頁面訪問正常,但是程序日志輸出依然有權限訪問出錯

于是繼續(xù)排查,受限請求如下:

http://localhost:8080/configuration/security
http://localhost:8080/configuration/ui

所以繼續(xù)添加放行:

filterChainDefinitionMap.put("/configuration/security", "anon");
filterChainDefinitionMap.put("/configuration/ui", "anon");

最終配置為:

@Bean(name = "shiroFilter")
    public ShiroFilterFactoryBean shiroFilterFactoryBean(SecurityManager securityManager) {
        ShiroFilterFactoryBean shiroFilterFactoryBean = new ShiroFilterFactoryBean();
        //Shiro的核心安全接口,這個屬性是必須的
        shiroFilterFactoryBean.setSecurityManager(securityManager);
        Map<String, Filter> filterMap = new LinkedHashMap<>();
        filterMap.put("authc", new AjaxPermissionsAuthorizationFilter());
        shiroFilterFactoryBean.setFilters(filterMap);
        /*定義shiro過濾鏈  Map結構
         * Map中key(xml中是指value值)的第一個'/'代表的路徑是相對于HttpServletRequest.getContextPath()的值來的
         * anon:它對應的過濾器里面是空的,什么都沒做,這里.do和.jsp后面的*表示參數,比方說login.jsp?main這種
         * authc:該過濾器下的頁面必須驗證后才能訪問,它是Shiro內置的一個攔截器org.apache.shiro.web.filter.authc.FormAuthenticationFilter
         */
        Map<String, String> filterChainDefinitionMap = new LinkedHashMap<>();
         /* 過濾鏈定義,從上向下順序執(zhí)行,一般將 / ** 放在最為下邊:這是一個坑呢,一不小心代碼就不好使了;
          authc:所有url都必須認證通過才可以訪問; anon:所有url都都可以匿名訪問 */
        filterChainDefinitionMap.put("/", "anon");
        filterChainDefinitionMap.put("/static/**", "anon");
        filterChainDefinitionMap.put("/login/auth", "anon");
        filterChainDefinitionMap.put("/login/logout", "anon");
        filterChainDefinitionMap.put("/error", "anon");
        //swagger放行
        filterChainDefinitionMap.put("/swagger-ui.html", "anon");
        filterChainDefinitionMap.put("/swagger-resources", "anon");
        filterChainDefinitionMap.put("/v2/api-docs", "anon");
        filterChainDefinitionMap.put("/webjars/springfox-swagger-ui/**", "anon");
        filterChainDefinitionMap.put("/configuration/security", "anon");
        filterChainDefinitionMap.put("/configuration/ui", "anon");
        filterChainDefinitionMap.put("/**", "authc");
        shiroFilterFactoryBean.setFilterChainDefinitionMap(filterChainDefinitionMap);
        return shiroFilterFactoryBean;
    }

注意:filterChainDefinitionMap.put("/**", "authc") 需要放置在最后面。

最終結果: 訪問http://localhost:8080/api/swagger-ui.html出現

以上就是shiro整合swagger需要注意的地方的詳細內容,更多關于shiro整合swagger的資料請關注腳本之家其它相關文章!

相關文章

  • Java8中Map常用的遍歷方式

    Java8中Map常用的遍歷方式

    這篇文章主要給大家介紹了關于Java8中Map常用的遍歷方式,map屬于java中的頂級接口之一,區(qū)別于list,map是鍵值對的形式存在,需要的朋友可以參考下
    2023-07-07
  • Java深入講解Bean作用域與生命周期

    Java深入講解Bean作用域與生命周期

    這篇文章主要介紹了淺談Spring中Bean的作用域和生命周期,從創(chuàng)建到消亡的完整過程,例如人從出生到死亡的整個過程就是一個生命周期。本文將通過示例為大家詳細講講,感興趣的可以學習一下
    2022-06-06
  • Spring?IoC容器Bean作用域的singleton與prototype使用配置

    Spring?IoC容器Bean作用域的singleton與prototype使用配置

    這篇文章主要為大家介紹了Spring?IoC容器Bean作用域的singleton與prototype使用配置詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-12-12
  • mybatis抽取基類BaseMapper增刪改查的實現

    mybatis抽取基類BaseMapper增刪改查的實現

    目前項目當中使用mapper.xml文件方式對數據庫進行操作,但是每個里邊都有增/刪/改/查,為了方便開發(fā),把這些公共的代碼提取出來,不用當做基類,不用每個Mapper文件都寫了,本文就詳細的介紹一下實現方法
    2021-09-09
  • 如何把idea中的項目導入github倉庫中(圖文詳解)

    如何把idea中的項目導入github倉庫中(圖文詳解)

    這篇文章主要介紹了如何把idea中的項目導入github倉庫中,本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-07-07
  • Spring Boot 快速入門指南

    Spring Boot 快速入門指南

    Spring 框架是非常著名的 Java 開源框架,歷經十多年的發(fā)展,整個生態(tài)系統(tǒng)已經非常完善甚至是繁雜,Spring Boot 正是為了解決這個問題而開發(fā)的,為 Spring 平臺和第三方庫提供了開箱即用的設置,只需要很少的配置就可以開始一個 Spring 項目
    2017-03-03
  • IDEA個性化設置注釋模板詳細講解版

    IDEA個性化設置注釋模板詳細講解版

    IDEA自帶的注釋模板不是太好用,我本人到網上搜集了很多資料系統(tǒng)的整理了一下制作了一份比較完整的模板來分享給大家,下面這篇文章主要給大家介紹了IDEA個性化設置注釋模板的相關資料,需要的朋友可以參考下
    2024-01-01
  • Java中ReentrantLock的用法和原理

    Java中ReentrantLock的用法和原理

    本文主要介紹了Java中ReentrantLock的用法和原理,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-06-06
  • java中BigDecimal類型比較大小和絕對值計算方式

    java中BigDecimal類型比較大小和絕對值計算方式

    這篇文章主要介紹了java中BigDecimal類型比較大小和絕對值計算方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-07-07
  • JSON--List集合轉換成JSON對象詳解

    JSON--List集合轉換成JSON對象詳解

    這篇文章主要介紹了List集合轉換成JSON對象,小編覺得挺不錯的,現在就分享給大家,也給大家做個參考。
    2017-01-01

最新評論