Springboot Admin

spring boot admin 集成security的一些坑

集成Security教程请点击以下大佬的链接
http://blog.csdn.net/forezp/article/details/86105850

以下只分享以下我遇到的坑

1.邮箱发送问题

spring:
 mail:
  host: smtp.163.com  #这是个人测试版,企业版设置不同   格式像这样 smtp.qq.com
  username: XXXXXXX@163.com  #邮箱  没话说
  password: XXXXXXXXX   #坑  这里填的是邮箱的IMAP/SMTP服务给的码 不是邮箱登录密码
  properties:
    main:
      smtp:
        auth: true
        starttls:
          enable: true
          required: true
 boot:
   admin:
     notify:
       mail:
         to: XXXXXXX@qq.com  #到哪去  
         from: XXXXXXX@163.com #从哪发
         
#security配置
security:
   user:
     name: zlf
     password: 123

2.日志的一些坑

  1. 在线查看日志必需以下配置
logging:
#  日志写入位置
  file: logs/error.demo-logback.log
  pattern:
#    日志格式
    file: "%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(%5p) %clr(${PID}){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n%wEx"

如果你自已配置了 logback-spring.xml文件

<appender name="FILE_ERROR" class="ch.qos.logback.core.rolling.RollingFileAppender">
		<!--如果只是想要 Error 级别的日志,那么需要过滤一下,默认是 info 级别的,ThresholdFilter-->
<!--		<filter class="ch.qos.logback.classic.filter.ThresholdFilter">-->
<!--			<level>Error</level>-->
<!--		</filter>-->
		<!--日志名称,如果没有File 属性,那么只会使用FileNamePattern的文件路径规则如果同时有<File>和<FileNamePattern>,那么当天日志是<File>,明天会自动把今天的日志改名为今天的日期。即,<File> 的日志都是当天的。-->
		<File>logs/error.demo-logback.log</File>
		<!--滚动策略,按照时间滚动 TimeBasedRollingPolicy-->
		<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
			<!--文件路径,定义了日志的切分方式——把每一天的日志归档到一个文件中,以防止日志填满整个磁盘空间-->
			<FileNamePattern>logs/demo-logback/error.created_on_%d{yyyy-MM-dd}.part_%i.log</FileNamePattern>
			<!--只保留最近90天的日志-->
			<maxHistory>90</maxHistory>
			<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
				<!-- maxFileSize:这是活动文件的大小,默认值是10MB,本篇设置为1KB,只是为了演示 -->
				<maxFileSize>2MB</maxFileSize>
			</timeBasedFileNamingAndTriggeringPolicy>
		</rollingPolicy>
		<encoder>
			<pattern>${FILE_ERROR_PATTERN}</pattern>
			<charset>UTF-8</charset> <!-- 此处设置字符集 -->
		</encoder>
	</appender>

日志级别过滤一定不能写死,不然会影响admin的动态修改日志级别功能

2.client集成security动态日志级别更改问题
在server端集成security上面链接里有讲,但是在client端集成security讲的就比较少了,集成之后发现日志级别无法动态修改。
Springboot Admin
最后发现是少了security的配置,不配置就无法更改

/**
 * 允许Server端读取actuator暴露的数据
 */
@Configuration
public class SecurityPermitAllConfig extends WebSecurityConfigurerAdapter {

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.authorizeRequests()
            //其他所有请求需要登录
            .anyRequest().authenticated()
            .and().formLogin().and()
            .httpBasic().and()
            .csrf()
            .disable();
    }
}

顺手也贴以下client的配置

server:
  port: 8080
  servlet:
    context-path: /demo
spring:
  application:
    # Spring Boot Admin展示的客户端项目名,不设置,会使用自动生成的随机id
    name: spring-boot-demo-admin-client
  boot:
    admin:
      client:
        # Spring Boot Admin 服务端地址
        url: "http://localhost:8000"
        instance:
          metadata:
            # 客户端端点信息的安全认证信息
            user.name: ${spring.security.user.name}
            user.password: ${spring.security.user.password}
          prefer-ip: true
#          service-url: "http://localhost:8080/demo"
        username: zlf
        password: 123

  security:
    user:
      name: zlf
      password: 1234

management:
  endpoint:
    health:
      # 端点健康情况,默认值"never",设置为"always"可以显示硬盘使用情况和线程情况
      show-details: always
  endpoints:
    web:
      exposure:
        # 设置端点暴露的哪些内容,默认["health","info"],设置"*"代表暴露所有可访问的端点
        include: "*"


logging:
#  日志写入位置
  file: logs/error.demo-logback.log
  pattern:
#    日志格式
    file: "%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(%5p) %clr(${PID}){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n%wEx"

顺手也把跨域配置一下

/**
 * 跨域
 */
@Configuration
public class CorsConfig implements WebMvcConfigurer {

    @Override
    public void addCorsMappings(CorsRegistry registry) {
        registry.addMapping("/**")
                .allowCredentials(true)
                .allowedHeaders("*")
                .allowedOrigins("*")
                .allowedMethods("*");

    }}
上一篇:c – 在CLR中使用boost


下一篇:AT89C52流水灯+外部中断INT0+定时器(汇编语言)