diff --git a/src/main/java/top/fjy8018/shiro/config/DruidConfiguration.java b/src/main/java/top/fjy8018/shiro/config/DruidConfiguration.java new file mode 100644 index 0000000..fd017e6 --- /dev/null +++ b/src/main/java/top/fjy8018/shiro/config/DruidConfiguration.java @@ -0,0 +1,73 @@ +package top.fjy8018.shiro.config; + +import com.alibaba.druid.support.http.StatViewServlet; +import com.alibaba.druid.support.http.WebStatFilter; +import org.mybatis.spring.SqlSessionFactoryBean; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.boot.jdbc.DataSourceBuilder; +import org.springframework.boot.web.servlet.FilterRegistrationBean; +import org.springframework.boot.web.servlet.ServletRegistrationBean; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Primary; +import org.springframework.core.io.support.PathMatchingResourcePatternResolver; +import org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor; + +import javax.sql.DataSource; + +/** + * 阿里Druid配置 + * @author F嘉阳 + * @date 2018/7/6 16:12 + */ +@Configuration +public class DruidConfiguration { + + @Bean + public ServletRegistrationBean statViewServlet() { + ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean(new StatViewServlet(), "/druid/*"); + //白名单: + servletRegistrationBean.addInitParameter("allow", "127.0.0.1"); + //IP黑名单 (存在共同时,deny优先于allow) : 如果满足deny的即提示:Sorry, you are not permitted to view this page. + servletRegistrationBean.addInitParameter("deny", "192.168.1.100"); + //登录查看信息的账号密码. + servletRegistrationBean.addInitParameter("loginUsername", "druid"); + servletRegistrationBean.addInitParameter("loginPassword", "12345678"); + //是否能够重置数据. + servletRegistrationBean.addInitParameter("resetEnable", "false"); + return servletRegistrationBean; + } + + @Bean + public FilterRegistrationBean statFilter() { + FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean(new WebStatFilter()); + //添加过滤规则. + filterRegistrationBean.addUrlPatterns("/*"); + //添加不需要忽略的格式信息. + filterRegistrationBean.addInitParameter("exclusions", "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*"); + return filterRegistrationBean; + } + + @Bean + PersistenceExceptionTranslationPostProcessor persistenceExceptionTranslationPostProcessor() { + return new PersistenceExceptionTranslationPostProcessor(); + } + + //配置数据库的基本链接信息 + @Bean(name = "dataSource") + @Primary + @ConfigurationProperties(prefix = "spring.datasource") //可以在application.properties中直接导入 + public DataSource dataSource() { + return DataSourceBuilder.create().type(com.alibaba.druid.pool.DruidDataSource.class).build(); + } + + @Bean + public SqlSessionFactoryBean sqlSessionFactory(@Qualifier("dataSource") DataSource dataSource) throws Exception { + SqlSessionFactoryBean bean = new SqlSessionFactoryBean(); + bean.setDataSource(dataSource); + PathMatchingResourcePatternResolver resolver = new PathMatchingResourcePatternResolver(); + bean.setMapperLocations(resolver.getResources("classpath:/mapper/*.xml")); + return bean; + } +} diff --git a/src/main/java/top/fjy8018/shiro/config/ShiroConfiguration.java b/src/main/java/top/fjy8018/shiro/config/ShiroConfiguration.java index 522c429..715726f 100644 --- a/src/main/java/top/fjy8018/shiro/config/ShiroConfiguration.java +++ b/src/main/java/top/fjy8018/shiro/config/ShiroConfiguration.java @@ -40,6 +40,7 @@ public class ShiroConfiguration { // 登录页无需拦截,anon即匿名访问 filterChainDefinitionMap.put("/login", "anon"); filterChainDefinitionMap.put("/doLogin","anon"); + filterChainDefinitionMap.put("/druid/**","anon"); // 指定页面只能给指定用户访问,校验角色名称类org.apache.shiro.web.filter.authz.RolesAuthorizationFilter filterChainDefinitionMap.put("/admin","roles[admin]");