Spring security
1.安全架構
1. 認證
who are you
登陸系統:用戶系統
2. 授權
權限管理:用戶授權
3. 攻擊防護
- xss (cross-site scripting)
- csrf (cross-site request forgery)
- cors (cross-origin resource sharing)
- sql注入
4. 擴展:權限管理模型
a. RBAC(role based access controll)
- 用戶(t_user)
- 用戶角色關聯表
- 角色(t.role)
- 角色權限關聯表
- 權限 (t_permission)
b. ACL
- 直接用戶和權限掛鉤
用戶(t.user)
權限(t_permission)
2.Spring security 原理
1.過濾器鏈架構
2.FilterChainProxy
3.SecurityFilterChain
3.使用
導入依賴
<!-- Spring Security依賴 -->
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-security</artifactId>
</dependency>
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><scope>provided </scope>
</dependency>
配置類
@Configuration
public class AppSercuityConfig {@BeanSecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {http.authorizeHttpRequests(registry ->{registry.requestMatchers("/").permitAll() //允許所有人訪問主頁.anyRequest().authenticated(); //剩下的所有請求都需要認證});//啟用表單登陸http.formLogin(FormLogin -> {FormLogin.loginPage("/login").permitAll();});return http.build();}
}
yaml配置文件中配置默認用戶名和密碼
spring:security:user:name: userpassword: 123roles: admin,common,hr
不配置默認用戶名:user
密碼每次都是隨機由控制臺打印
自定義用戶信息查詢規則
開啟方法級別的精確權限控制
配置類中 @EnableMethodSecurity
控制類中
?