1.什么是Security
SpringSecurity是基于Spring AOP和Servlet过滤器的安全框架。
它提供全面的安全性解决方案,同时在Web 请求级和方法调用级处理身份确认和授权。
2.Spring Security核心功能?
(1)认证(你是谁,用户/设备/系统)
(2)验证(你能干什么,也叫权限控制/授权,允许执行的操作)
(3)攻击防护(防止伪造身份)
3.Spring Security原理技术
Filter、Servlet、Spring DI、SpringAOP.
在 Spring Framework 基础上,Spring Security 充分利用了依赖注入(DI,Dependency Injection)和面向切面编程(AOP)功能,为应用系统提供声明式的安全访问控制功能,减少了为企业系统安全控制编写大量重复代码的工作。它是一个轻量级的安全框架,它确保基于Spring的应用程序提供身份验证和授权支持。
4. springboot整合Security(简单版)
1.maven配置
<!-- 初始化配置 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>2.7.2</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<version>2.7.2</version>
</dependency>
<!-- 集成security-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
<version>2.7.2</version>
</dependency>
2.yml 配置
security:
user:
name: user
password: 123456
注意:这个配置如果没有的话,控制台会自动打印下面的密码:默认用户名是user
Using generated security password: 51e13039-b93f-4f91-90fb-58c18f6ff8ea
3.测试
我这里上一篇写了整合swagger,所直接访问了swagger接口:
会自动跳转到:http://localhost:8081/login
登录进来了:
5.springboot整合Security(内存版,改吧改吧就成数据库了)
1.maven引用 直接用上边简单版的就行
2.注释掉yml配置的
# security:
# user:
# name: user
# password: 123456
3.增加WebSecurityConfig 配置类
package com.springboot.test.config.security;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.security.crypto.password.PasswordEncoder;
/**
* @author cf
* @date 2022/12/4 11:44
* @description
*/
@Configuration
@EnableWebSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
/*
* 配置为从内存中进行加载认证信息.
* 这里配置了两个用户 admin和user
*/
auth.inMemoryAuthentication()
.withUser("admin")
.password(passwordEncoder().encode("123456"))
.roles();
auth.inMemoryAuthentication()
.withUser("user")
.password(passwordEncoder().encode("123456"))
.roles();
}
@Bean
public PasswordEncoder passwordEncoder() {
return new BCryptPasswordEncoder();
}
}
4.测试一下 按照上面的重启 请求接口就好了
6.Security优点
(1)Spring Security基于Spring开发,项目中如果使用Spring作为基础,配合Spring Security做权限更加方便。
(2)Spring Security功能丰富,例如安全防护方面。
(3)Spring Security社区资源相对丰富。
(4)和Spring Boot,Spring Cloud,三者可以无缝集成。