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

shiro整合swagger的注意事項(xiàng)

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

swagger是一個(gè)很好的rest api管理工具,最近又整合了基于shiro的權(quán)限控制,出問(wèn)題了,http://localhost:8080/swagger-ui.html訪問(wèn)不正常,問(wèn)題肯定是shiro沒(méi)放行導(dǎo)致的

shiro 配置

在shiroFilter中的配置如下:

@Bean(name = "shiroFilter")
    public ShiroFilterFactoryBean shiroFilterFactoryBean(SecurityManager securityManager) {
        ShiroFilterFactoryBean shiroFilterFactoryBean = new ShiroFilterFactoryBean();
        //Shiro的核心安全接口,這個(gè)屬性是必須的
        shiroFilterFactoryBean.setSecurityManager(securityManager);
        Map<String, Filter> filterMap = new LinkedHashMap<>();
        filterMap.put("authc", new AjaxPermissionsAuthorizationFilter());
        shiroFilterFactoryBean.setFilters(filterMap);
        /*定義shiro過(guò)濾鏈  Map結(jié)構(gòu)
         * Map中key(xml中是指value值)的第一個(gè)'/'代表的路徑是相對(duì)于HttpServletRequest.getContextPath()的值來(lái)的
         * anon:它對(duì)應(yīng)的過(guò)濾器里面是空的,什么都沒(méi)做,這里.do和.jsp后面的*表示參數(shù),比方說(shuō)login.jsp?main這種
         * authc:該過(guò)濾器下的頁(yè)面必須驗(yàn)證后才能訪問(wèn),它是Shiro內(nèi)置的一個(gè)攔截器org.apache.shiro.web.filter.authc.FormAuthenticationFilter
         */
        Map<String, String> filterChainDefinitionMap = new LinkedHashMap<>();
         /* 過(guò)濾鏈定義,從上向下順序執(zhí)行,一般將 / ** 放在最為下邊:這是一個(gè)坑呢,一不小心代碼就不好使了;
          authc:所有url都必須認(rèn)證通過(guò)才可以訪問(wèn); anon:所有url都都可以匿名訪問(wèn) */
        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ī)的過(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,運(yùn)行,swagger2頁(yè)面訪問(wèn)正常,但是程序日志輸出依然有權(quán)限訪問(wèn)出錯(cuò)

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

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的核心安全接口,這個(gè)屬性是必須的
        shiroFilterFactoryBean.setSecurityManager(securityManager);
        Map<String, Filter> filterMap = new LinkedHashMap<>();
        filterMap.put("authc", new AjaxPermissionsAuthorizationFilter());
        shiroFilterFactoryBean.setFilters(filterMap);
        /*定義shiro過(guò)濾鏈  Map結(jié)構(gòu)
         * Map中key(xml中是指value值)的第一個(gè)'/'代表的路徑是相對(duì)于HttpServletRequest.getContextPath()的值來(lái)的
         * anon:它對(duì)應(yīng)的過(guò)濾器里面是空的,什么都沒(méi)做,這里.do和.jsp后面的*表示參數(shù),比方說(shuō)login.jsp?main這種
         * authc:該過(guò)濾器下的頁(yè)面必須驗(yàn)證后才能訪問(wèn),它是Shiro內(nèi)置的一個(gè)攔截器org.apache.shiro.web.filter.authc.FormAuthenticationFilter
         */
        Map<String, String> filterChainDefinitionMap = new LinkedHashMap<>();
         /* 過(guò)濾鏈定義,從上向下順序執(zhí)行,一般將 / ** 放在最為下邊:這是一個(gè)坑呢,一不小心代碼就不好使了;
          authc:所有url都必須認(rèn)證通過(guò)才可以訪問(wèn); anon:所有url都都可以匿名訪問(wèn) */
        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") 需要放置在最后面。

最終結(jié)果: 訪問(wèn)http://localhost:8080/api/swagger-ui.html出現(xiàn)

以上就是shiro整合swagger需要注意的地方的詳細(xì)內(nèi)容,更多關(guān)于shiro整合swagger的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

最新評(píng)論

左权县| 融水| 蒲江县| 揭东县| 四平市| 赤水市| 陈巴尔虎旗| 乐清市| 新野县| 淮南市| 砀山县| 青海省| 太白县| 益阳市| 东莞市| 仁化县| 毕节市| 古蔺县| 营山县| 大庆市| 玉溪市| 比如县| 赞皇县| 阿瓦提县| 景德镇市| 连山| 固原市| 仁布县| 锡林浩特市| 灵宝市| 大冶市| 仙桃市| 延寿县| 孟村| 华蓥市| 元朗区| 仁化县| 巴青县| 大洼县| 西安市| 阿勒泰市|