第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定

springboot整合shiro后Swagger報404

//?SwaggerConfig?
package?com.kaituo.common.swagger;

import?com.google.common.base.Predicates;
import?org.springframework.context.annotation.Bean;
import?org.springframework.context.annotation.ComponentScan;
import?org.springframework.context.annotation.Configuration;
import?org.springframework.web.servlet.config.annotation.EnableWebMvc;
import?org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import?org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport;
import?org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import?springfox.documentation.builders.ApiInfoBuilder;
import?springfox.documentation.builders.PathSelectors;
import?springfox.documentation.builders.RequestHandlerSelectors;
import?springfox.documentation.service.ApiInfo;
import?springfox.documentation.service.Contact;
import?springfox.documentation.spi.DocumentationType;
import?springfox.documentation.spring.web.plugins.Docket;
import?springfox.documentation.swagger2.annotations.EnableSwagger2;


/**
?*?swagger?接口文檔工具
?*?@Author:?RenShuai
?*?@Classname?SwaggerConfig
?*?@Package?com.kaituo.common.swagger
?*?@Date?2019/8/28?13:48
?*?@Version?V1.0
?*?@address?:?http://localhost:7100/swagger-ui.html
?*/
@Configuration
@EnableWebMvc
@EnableSwagger2
@ComponentScan(basePackages?=?{?"com.kaituo.common.*"?})
public?class?SwaggerConfig?implements?WebMvcConfigurer?{
????/**
?????*?創(chuàng)建一個Docket對象
?????*?調(diào)用select()方法,
?????*?生成ApiSelectorBuilder對象實例,該對象負(fù)責(zé)定義外漏的API入口
?????*?通過使用RequestHandlerSelectors和PathSelectors來提供Predicate,在此我們使用any()方法,將所有API都通過Swagger進(jìn)行文檔管理
?????*?@return
?????*/
????@Bean
????public?Docket?createRestApi()?{
????????return?new?Docket(DocumentationType.SWAGGER_2)
????????????????.apiInfo(apiInfo())
????????????????.select()
????????????????.apis(RequestHandlerSelectors.any())
????????????????.paths(Predicates.not(PathSelectors.regex("/error.*")))//錯誤路徑不監(jiān)控
????????????????.paths(PathSelectors.any())
????????????????.build();
????}

????private?ApiInfo?apiInfo()?{
????????return?new?ApiInfoBuilder()
????????????????//標(biāo)題
????????????????.title("科研項目接口文檔")
????????????????//簡介
????????????????.description("")
????????????????//服務(wù)條款
????????????????.termsOfServiceUrl("")
????????????????//作者個人信息
????????????????.contact(new?Contact("renshuai","","xxx@xxx.com"))
????????????????//版本
????????????????.version("1.0")
????????????????.build();
????}

????@Override
????public?void?addResourceHandlers(ResourceHandlerRegistry?registry)?{
//????????registry.addResourceHandler("/**").addResourceLocations("classpath*:/static/");
????????registry.addResourceHandler("swagger-ui.html")
????????????????.addResourceLocations("classpath:/META-INF/resources/");
????????registry.addResourceHandler("/webjars/**")
????????????????.addResourceLocations("classpath:/META-INF/resources/webjars/");
//????????super.addResourceHandlers(registry);
????}
}

shiro的配置

package?com.kaituo.shiro.configs;

import?com.kaituo.pojo.bo.ShiroBO;
import?org.apache.shiro.authc.credential.HashedCredentialsMatcher;
import?org.apache.shiro.mgt.SecurityManager;
import?org.apache.shiro.session.mgt.eis.MemorySessionDAO;
import?org.apache.shiro.spring.security.interceptor.AuthorizationAttributeSourceAdvisor;
import?org.apache.shiro.spring.web.ShiroFilterFactoryBean;
import?org.apache.shiro.web.mgt.DefaultWebSecurityManager;
import?org.apache.shiro.web.session.mgt.DefaultWebSessionManager;
import?org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator;
import?org.springframework.beans.factory.annotation.Autowired;
import?org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import?org.springframework.context.annotation.Bean;
import?org.springframework.context.annotation.Configuration;

import?java.util.LinkedHashMap;
import?java.util.Map;

/**
?*?@program:?scaffold
?*?@description:
?*?@author:?由蘇澤華創(chuàng)建
?*?@create:?2019-09-29?14:04
?**/

@Configuration
public?class?ShiroConfig?{
????@Autowired
????ShiroBO?shiroBO;

????@Bean
????@ConditionalOnMissingBean
????public?DefaultAdvisorAutoProxyCreator?defaultAdvisorAutoProxyCreator()?{
????????DefaultAdvisorAutoProxyCreator?app?=?new?DefaultAdvisorAutoProxyCreator();
????????app.setProxyTargetClass(true);
????????return?app;
????}

????@Bean(name?=?"shiroFilter")
????public?ShiroFilterFactoryBean?shiroFilter()?{
????????ShiroFilterFactoryBean?shiroFilterFactoryBean?=?new?ShiroFilterFactoryBean();
????????shiroFilterFactoryBean.setSecurityManager(securityManager());
????????//登錄
//????????shiroFilterFactoryBean.setLoginUrl("/login");
????????//未授權(quán)界面,聽說這個有問題。是個坑
//????????shiroFilterFactoryBean.setUnauthorizedUrl("/notRole");
????????Map<String,?String>?filterChainDefinitionMap?=?new?LinkedHashMap<>();
????????//?<!--?authc:所有url都必須認(rèn)證通過才可以訪問;?anon:所有url都都可以匿名訪問-->
????????filterChainDefinitionMap.put("classpath:/static/**",?"anon");
????????filterChainDefinitionMap.put("/css/**",?"anon");
????????filterChainDefinitionMap.put("/js/**",?"anon");
????????filterChainDefinitionMap.put("/img/**",?"anon");
????????filterChainDefinitionMap.put("/favicon.ico",?"anon");
????????filterChainDefinitionMap.put("/swagger-ui.html",?"anon");
????????filterChainDefinitionMap.put("/swagger/**","anon");
????????filterChainDefinitionMap.put("/webjars/**",?"anon");
????????filterChainDefinitionMap.put("/swagger-resources/**","anon");
????????filterChainDefinitionMap.put("/v2/**","anon");

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

????????filterChainDefinitionMap.put("/login",?"anon");
????????filterChainDefinitionMap.put("/api/**",?"anon");
????????filterChainDefinitionMap.put("/logout",?"anon");

????????filterChainDefinitionMap.put("/admin/**",?"authc");
????????filterChainDefinitionMap.put("/user/**",?"authc");
????????//主要這行代碼必須放在所有權(quán)限設(shè)置的最后,不然會導(dǎo)致所有?url?都被攔截?剩余的都需要認(rèn)證
//????????filterChainDefinitionMap.put("/**",?"authc");

????????shiroFilterFactoryBean.setFilterChainDefinitionMap(filterChainDefinitionMap);
????????return?shiroFilterFactoryBean;

????}

????/**
?????*?創(chuàng)建securityManger對象
?????*
?????*?@param
?????*?@Description:?創(chuàng)建securityManger對象
?????*?@Param:
?????*?@return:?org.apache.shiro.web.mgt.DefaultWebSecurityManager
?????*?@Author:?蘇澤華
?????*?@Date:?2019/1/10
?????*/
????@Bean
????public?SecurityManager?securityManager()?{
????????DefaultWebSecurityManager?securityManager?=?new?DefaultWebSecurityManager();


????????securityManager.setSessionManager(sessionManager());
????????//?TODO:?2019/8/29
//????????securityManager.setCacheManager(redisCacheManager());
????????securityManager.setRealm(realm());
????????return?securityManager;
????}

????@Bean
????public?DefaultWebSessionManager?sessionManager()?{
????????DefaultWebSessionManager?sessionManager?=?new?DefaultWebSessionManager();
????????sessionManager.setSessionDAO(sessionDAO());
????????sessionManager.setDeleteInvalidSessions(true);
????????sessionManager.setGlobalSessionTimeout(shiroBO.getShiroSessionTimeout());
????????sessionManager.setSessionValidationInterval(shiroBO.getShiroSessionValidationInterval());
????????sessionManager.setSessionValidationSchedulerEnabled(true);
????????return?sessionManager;
????}

????@Bean
????public?MemorySessionDAO?sessionDAO()?{
????????MemorySessionDAO?memorySessionDAO?=?new?MemorySessionDAO();
????????return?memorySessionDAO;
????}

????/**
?????*?創(chuàng)建密碼驗證器
?????*
?????*?@param
?????*?@Description:?創(chuàng)建密碼驗證器
?????*?@Param:
?????*?@return:?org.apache.shiro.authc.credential.HashedCredentialsMatcher
?????*?@Author:?蘇澤華
?????*?@Date:?2019/1/10
?????*/
????@Bean
????public?HashedCredentialsMatcher?credentialsMatcher()?{
????????HashedCredentialsMatcher?hashedCredentialsMatcher?=?new?HashedCredentialsMatcher();
????????hashedCredentialsMatcher.setHashAlgorithmName(shiroBO.getHashAlgorithmName());
????????hashedCredentialsMatcher.setHashIterations(shiroBO.getHashIterations());
????????return?hashedCredentialsMatcher;
????}

????/**
?????*?*
?????*?開啟Shiro的注解(如@RequiresRoles,@RequiresPermissions),需借助SpringAOP掃描使用Shiro注解的類,并在必要時進(jìn)行安全邏輯驗證
?????*?*
?????*?配置以下兩個bean(DefaultAdvisorAutoProxyCreator(可選)和AuthorizationAttributeSourceAdvisor)即可實現(xiàn)此功能
?????*?*?@return
?????*/
//????@Bean
//????@DependsOn({"lifecycleBeanPostProcessor"})
//????public?DefaultAdvisorAutoProxyCreator?advisorAutoProxyCreator()?{
//????????DefaultAdvisorAutoProxyCreator?advisorAutoProxyCreator?=?new?DefaultAdvisorAutoProxyCreator();
//????????advisorAutoProxyCreator.setProxyTargetClass(true);
//????????return?advisorAutoProxyCreator;
//????}
????@Bean
????public?AuthorizationAttributeSourceAdvisor?authorizationAttributeSourceAdvisor()?{
????????AuthorizationAttributeSourceAdvisor?authorizationAttributeSourceAdvisor?=?new?AuthorizationAttributeSourceAdvisor();
????????authorizationAttributeSourceAdvisor.setSecurityManager(securityManager());
????????return?authorizationAttributeSourceAdvisor;
????}

????/**
?????*?創(chuàng)建realm
?????*
?????*?@param
?????*?@Description:?創(chuàng)建realm
?????*?@Param:
?????*?@return:?com.company.shiro.realm.TestCustomRealm
?????*?@Author:?蘇澤華
?????*?@Date:?2019/1/10
?????*/
????@Bean
????public?CustomRealm?realm()?{
????????CustomRealm?realm?=?new?CustomRealm();
????????realm.setShiroBO(shiroBO);
????????realm.setCredentialsMatcher(credentialsMatcher());
????????return?realm;
????}


}

錯誤信息

http://img3.sycdn.imooc.com/5d9f10670001c94f11280174.jpg

已經(jīng)整了兩天了


正在回答

舉報

0/150
提交
取消

springboot整合shiro后Swagger報404

我要回答 關(guān)注問題
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號