spring boot2.x集成spring security5与druid1.1.13(一)
版本:
spring boot 2.1.2.RELEASE
druid-spring-boot-starter 1.1.13
步骤:
一.maven
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.1.2.RELEASE</version> </parent> ... <dependency> <groupId>com.alibaba</groupId> <artifactId>druid-spring-boot-starter</artifactId> <version>1.1.13</version> </dependency>
二、yml配置
spring: profiles: dev datasource: url: jdbc:mysql://127.0.0.1:3306/sina?useUnicode=true&characterEncoding=utf8&serverTimezone=UTC name: druidDataSource type: com.alibaba.druid.pool.DruidDataSource # driver-class-name: com.mysql.cj.jdbc.Driver username: root password: root druid: #初始化大小,最小,最大 initial-size: 5 min-idle: 5 max-active: 20 #配置获取连接等待超时的时间 max-wait: 60000 #配置多久检测一次,检测需要关闭空间连接,单位ms time-between-eviction-runs-millis: 60000 # 配置一个池中最小生存的时间 min-evictable-idle-time-millis: 300000 #用来检测连接是否有效的sql,要求是一个查询语句,常用select 'x'。如果validationQuery为null,testOnBorrow、testOnReturn、testWhileIdle都不会起作用 validation-query: SELECT 1 FROM DUAL #建议配置为true,不影响性能,并且保证安全性。申请连接的时候检测,如果空闲时间大于timeBetweenEvictionRunsMillis,执行validationQuery检测连接是否有效。 test-while-idle: true #申请连接时执行validationQuery检测连接是否有效,做了这个配置会降低性能。 test-on-borrow: false #归还连接时执行validationQuery检测连接是否有效,做了这个配置会降低性能 test-on-return: false #要启用PSCache,必须配置大于0,当大于0时,poolPreparedStatements自动触发修改为true。在Druid中,不会存在Oracle下PSCache占用内存过多的问题,可以把这个数值配置大一些,比如说100 max-pool-prepared-statement-per-connection-size: 20 #属性类型是字符串,通过别名的方式配置扩展插件,常用的插件有: #监控统计用的filter:stat #日志用的filter:log4j #防御sql注入的filter:wall filters: stat,wall #合并多个DruidDataSource的监控数据 use-global-data-source-stat: true #通过connectProperties属性打开mergeSql功能;慢sql记录 connect-properties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000 # 配置监控服务器 stat-view-servlet: login-username: admin login-password: 123456 url-pattern: /druid/* #添加ip白名单 allow: 127.0.0.1,192.168.0.5 #黑名单,黑白名单有重复,黑优先级高 #deny: # 禁用HTML页面上的“Reset All”功能 reset-enable: false # 必须启用,要不会404 enabled: true web-stat-filter: #添加过滤规则 url-pattern: /* #忽略过滤格式 exclusions: "*.js,*.gif,*.jpg,*.png,*.css,*.ico" enabled: true async-close-connection-enable: true aop-patterns: com.sswchat.service.* filter: stat: db-type: mysql log-slow-sql: true slow-sql-millis: 2000 enabled: true jpa: show-sql: true hibernate: ddl-auto: create-drop
我的环境在不加enable:true时访问http://127.0.0.1:8080/druid/login.html会报404
三、Security的SecurityConfig配置文件
@Configuration @EnableWebSecurity public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Override public void configure(WebSecurity web) throws Exception { web.ignoring().antMatchers("/css/**", "/sign", "/druid/**"); } @Override protected void configure(HttpSecurity http) throws Exception { http.authorizeRequests() //.antMatchers("/css/**","/sign","/druid/**").permitAll()// 与/ css / **和/ index匹配的请求是完全可访问的 .antMatchers("/user/**").hasRole("USER")//与/ user / **匹配的请求要求用户进行身份验证,并且必须与USER角色相关联 .and().formLogin().loginPage("/login") .failureUrl("/login-error")// 使用自定义登录页面和失败URL启用基于表单的身份验证 .and().csrf().disable(); } }
配置好后,如果只重写configure(HttpSecurity http),会出现submitlogin 403错误。
...