SpringSecurity基础
SpringSecurity
安全
网站设计之初就要考虑安全框架
环境
打开
idea建立一个springboot项目pom选择添加web再加一个
thymreleaf导入模板(上网随便下)

写一个RouterConTtroller
用于将页面实现url跳转

路径+id:通过id跳转把上面的素材,照着这样写即可
跑一下就是这样的

介绍
官方文档:
Spring Security 中文文档 参考手册 中文版
Spring Security 是针对Spring项目的安全框架,也是Spring Boot底层安全模块默认的技术选型,他可以实现强大的Web安全控制,对于安全控制,我们仅需要引入 spring-boot-starter-security模块,进行少量的配置,即可实现强大的安全管理
记住几个类:
- WebSecurityConfigurerAdapter:自定义Security策略
- AuthenticationManagerBuilder:自定义认证策略
- @EnableWebSecurity:开启Websecurity模式
Spring Security的两个主要目标是“认证”和“授权”(访问控制)。
“认证”(Authentication)
“授权”(Authorization)
这个概念是通用的,而不是只在Spring Security 中存在
实例
先导入依赖
1
2
3
4<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId) </dependency>导入之后会多这三个包

着重看一下 导入了一个AOP的包
AOP:
(面向切面编程)(横向编程) 是一种编程范式,允许将跨越多种功能的关注点(例如日志记录、事务管理、安全性等)从应用程序的业务逻辑中分离出来。AOP 使得这些关注点能够模块化,减少重复的代码,增加代码的可维护性和可扩展性。
AOP的实现方式:
JDK 动态代理:基于接口的代理,只有当目标类实现了接口时才能使用。它通过java.lang.reflect.Proxy类创建代理对象。CGLIB代理:基于子类的代理,目标类不需要实现接口,代理对象通过字节码技术生成。适用于没有接口的类。AspectJ:一种强大的 AOP 框架,它支持编译时、类加载时和运行时织入。
编写
直接看着官方文档来写就好
先创一个SecurityConfig文件(在这个里面写即可)

注意导入包
现在展示的是固定的。(就和java的public class xxxx一样)
授权
弄首页所有人可以访问,功能页有权限的可访问

没有权限默认到登陆页面

有没有发现我们没有配置
login页面,他就自己跳转了呢
这个是
formLogin帮我们做的
认证

使用
.and()拼接正常应该是从数据库里面读取,这里我们是自己写的数据
但是因为版本问题,后面版本优化,对账号密码进行加密
1
2
3
4
5
6
7
8
9
10
11
12
13
14@Override protected void configure(AuthenticationManagerBuilder auth) throws Exception { // 这些数据正常应该从数据库中读 auth.inMemoryAuthentication() .passwordEncoder(new BCryptPasswordEncoder()) .withUser("kuangshen") .password(new BCryptPasswordEncoder().encode("123456")).roles("vip2","vip3") .and() .withUser("root") .password(new BCryptPasswordEncoder().encode("123456")).roles("vip1","vip2","vip3") .and() .withUser("guest") .password(new BCryptPasswordEncoder().encode("123456")).roles("vip1"); }
用数据库就是绑定JDBC
注销

这是注销功能
改个前端即可
注销返回首页

防止csrf

thymreleaf
从官方文档修改html中对应的地方即可实现