Actuator是spring(boot)中 应用监控功能(应用运行环境以及运行状况)
Security是spring(boot)中 安全性保证(登陆、权限等)
将两者整合是为了完成只有admin用户才可以访问查看应用监控的功能,并且spring提供的这两个模块刚好可以使我们以最快的速度完成开发。
一个最简单的案例
首先依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>2.1.0.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
<version>2.1.0.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
<version>2.1.0.RELEASE</version>
</dependency>
一个最简单的启动类
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class,args);
}
}
配置文件 application.yml
server: #应用入口端口
port: 8081
spring: #Security 登陆的用户名跟密码(通常不会写在配置文件中,这里是为了掩饰)
security:
user:
name: "admin"
password: "123456"
management: #Actuator的端点配置,详细了解请点击文上方Actuator连接
endpoints:
web:
exposure:
include: "*"
endpoint:
health:
show-details: ALWAYS
这个时候Actuator已经完成(只需要依赖跟配置文件中的配置即可)
但是我们还需要去拦截url,使其需要通过安全认证(配置文件中的用户名跟密码)才可以访问,这个时候我们需要写一个配置类
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
public class ActuatorSecurity extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http.formLogin() //设置登陆页面,当前是使用的security自己的
.and() //不同模块设置用and分开
.authorizeRequests().antMatchers("/actuator/*").authenticated() //拦截的url
.anyRequest().permitAll(); //其他的请求全部放行
//这个意思是通过http:localhost:8081/actuator前缀的url访问的页面都被拦截,需要认证
//想详细了解的话,可以Security官网查
}
}
此时访问
http:localhost:8081/actuator
就会跳转到安全登陆页面
输入我们application.yml文件中指定的 admin/123456 就会成功跳转到Actuator页面
至此,最简单Actuator跟Security整合就完成了,因为其他文章有对两者的讲解,所以这里只是做一个简单的案例,通过详细了解两个以及这个整合的案例,可以做自己想要的效果。