日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

vb6编写用户权限_仅需三行代码,即可让Apache Shiro接管Swagger权限认证

發布時間:2024/10/14 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 vb6编写用户权限_仅需三行代码,即可让Apache Shiro接管Swagger权限认证 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

有很多文章提到,在生產環境中需要關閉Swagger功能,防止系統資源泄露。今天,我結合自己開發過程中的經驗,分享一個只需幾行代碼便可實現讓Apache Shiro接管Swagger認證和授權的方法。如果還有更好的方法,歡迎在文章末尾給我留言,一起交流。

初識Swagger

簡單來說,Swagger是一個開放源代碼的框架,旨在使用通用化的語言,讓開發者和非開發者都能理解你設計的API是什么結構,有什么用途。API文檔好比建筑藍圖,在建造房子時,必須按照藍圖的規格參數進行。

通常,一個軟件項目會伴隨著很多的API文檔需要編寫,當軟件版本變更時,還需要修改所有的API文檔細節(例如:請求地址,請求參數,返回值等等)。這是一件極具挑戰性的工作。長期以來,工程師們一直在努力尋找一種標準化的流程/方法來解決API文檔的設計,編寫,測試和維護問題,Swagger就是在這樣一種背景下誕生的。

Swagger

Swagger為API文檔的設計,開發,測試,維護提供了統一的解決方案。這極大的減輕了開發人員的工作負擔。但隨之而來的一個問題也會讓人擔心,通過Swagger UI提供統一的API文檔閱覽和測試,這會導致在生產環境下暴露系統資源。

如果你在項目中未使用過Swagger,你可以借助頭條App的搜索引擎,打開頭條App并在上方的輸入框輸入“Swagger”并搜索,你可以得到更多關于Swagger的資訊,例如:

頭條App搜索Swagger

我們并不希望所有人都可以查閱系統的API文檔,就像不是所有人都有權限查看建筑藍圖一樣。那么如何解決這一問題呢?

Apache Shiro接管Swagger權限認證

Swagger官方提供了6種認證和授權方式:basic-authenticationAPI密鑰bearer-authenticationOauth 2.0OpenID Connect DiscoveryCookie。但這幾種方式在體驗上效果都不好(當然,你也可以選擇在生產環境中關閉Swagger的功能)。能不能有一種方式,讓系統本身的權限認證體系接管Swagger的授權認證工作,讓Swagger專注于自己擅長的領域呢?這就是本文要介紹的重點。

快速認識Apache Shiro

Apache Shiro?是一個功能強大且易于使用的Java安全框架,用于執行身份認證,授權,加密和會話管理。你可以輕松地將其集成到你的項目中,且不需要改動太多的代碼。Shiro支持一個或多個可插拔的數據源,例如LDAP、JDBC、Active Directory等等,與此同時,Shiro還支持不同粒度的訪問控制,如基于用戶組,用戶角色,資源權限等。

Apache Shiro

如果你還想了解更多,不妨在頭條App搜索框中輸入“Shiro”并搜索,你你可獲取更多的指導視頻,例如下面的檢索信息:

頭條App搜索shro

使用Shiro接管Swagger認證授權

首先,假定你已經在自己的項目中使用了Swagger,并且你的項目是基于Spring Boot 2.0進行構建的,同時使用Maven對項目的依賴進行管理。如果你的項目還未使用Swagger,請將下面代碼配置到pom.xml文件中:

io.springfox springfox-swagger2 2.9.2io.springfox springfox-swagger-ui 2.9.2

另外,請檢查項目中是否加入了Shiro項目依賴,如果還未添加,請將下面代碼配置到pom.xml文件中:

org.apache.shiro shiro-core 1.4.2org.apache.shiro shiro-ehcache 1.4.0org.apache.shiro shiro-spring 1.4.0

備注

shiro-core:Apache Shiro核心依賴包

shiro-ehcache:基于Ehcache實現的數據緩存依賴包

shiro-spring:Apache Shiro與Spring整合依賴包

Apache Shiro & Swagger

配置Swagger

依賴就緒后,創建一個Swagger的配置文件并設置Swagger要掃描的包路徑(通常是Controller所在的包),API文檔標題(title),描述(description),版本號(version),聯系方式(contact)以及證書名稱(license)等等。下面是Swagger配置文件示例:

SwaggerConfiguration.java

@Configuration@EnableSwagger2public class SwaggerConfiguration { @Bean public Docket createRestApi(){ return new Docket(DocumentationType.SWAGGER_2) .pathMapping("/") .select() .apis(RequestHandlerSelectors.basePackage("com.ramostear.controller")) .paths(PathSelectors.any()) .build() .apiInfo( new ApiInfoBuilder() .title("Apache Shiro & Swagger") .description("使用Apache Shiro接管Swagger認證和授權") .version("1.0.0") .contact( new Contact("樹下魅狐", "https://www.ramostear.com", "ramostear@163.com") ) .license("The Apache License") .build() ); }}

注意

除了使用@Configuration對配置類進行注解外,別將@EnableSwagger注解遺漏!

在Shiro中配置Swagger

如果你的項目已經使用Apache Shiro進行認證和授權工作,那么只需要在ShiroFilterFactoryBean的配置代碼中加入對Swagger的過濾操作即可。你可以參照下面的代碼進行配置:

ShiroConfiguration.java

@Configurationpublic class ShiroConfiguration{ @Bean public EhCacheManager ehCacheManager(){...} @Bean public CustomShiroRealm customShiroRealm(){...} @Bean public SecurityManager securityManager(){ DefaultWebSecurityManager securityManager = new DefaultWebSecurityManager(); securityManager.setCacheManager(ehCacheManager()); securityManager.setRealm(customShiroRealm()); return securityManager; } ... @Bean public ShiroFilterFactoryBean shiroFilterFactoryBean(SecurityManager securityManager){ ShiroFilterFactoryBean filterFactoryBean = new ShiroFilterFactoryBean(); filterFactoryBean.setSecurityManager(securityManager); Map filterChainDefinition = new LinkedHashMap<>(); ... filterChainDefinition.put("/swagger-ui.html","authc"); filterChainDefinition.put("/v2/**","authc"); filterChainDefinition.put("/swagger-resources/**","authc"); filterFactoryBean.setFilterChainDefinitionMap(filterChainDefinition); return filterFactoryBean; } ....}

補充

除了上述給出的配置方式外,你可以根據實際需要,配置更細粒度的權限,例如用戶組,角色以及資源權限等等。

至此,如果你的項目原本使用了Apache Shiro框架,那么只需在原代碼的基礎上,增加三行配置代碼,即可讓Apache Shiro接管Swagger的認證和授權工作。

最后,通過實際項目來演示Apache Shiro接管Swagger認證和授權工作的效果:

Apache Shiro管理Swagger權限演示效果

說明

/admin/swagger請求頁面嵌入了一個iframe,其地址為:/swagger-ui.html。具體代碼如下:

swagger.html

當用戶登錄成功后,可以正常訪問Swagger的API文檔頁面,當注銷當前用戶后,再次訪問Swagger頁面,系統會跳轉到用戶登錄頁面,要求驗證用戶身份。

與50位技術專家面對面20年技術見證,附贈技術全景圖

總結

以上是生活随笔為你收集整理的vb6编写用户权限_仅需三行代码,即可让Apache Shiro接管Swagger权限认证的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。