介绍
SpringSecurity是基于Spring框架,提供了一套web应用安全性完整解决方案;主要解决用户认证和授权。认证:通俗点说就是系统判断用户是否能登录 ;授权:系统判断用户是否有权限去做某些事情
特点
- 和Spring无缝整合。
- 全面的权限控制。
- 专门为Web开发而设计。
- 重量级框架(缺点)
入门案例
- 创建boot项目添加依赖配置端口(本次案例采用2.3.7版本)
2. 运行项目控制台会出现如下一行字符
3.访问端口会进入SpringSecurity的登录页面(默认用户是user)
用户名就是user,密码是控制台的那一串,登陆成功后,会出现如下界面就代表操作正确
基本原理
SpringSecurity本质是一个过滤器链
两个重要的接口
- UserDetailsService接口:
当什么也没有配置的时候,账号和密码是由SpringSecurity定义生成的。而在实际项目中账号和密码都是数据库中查询出来的。所以我们要通过自定义逻辑来控制认证逻辑。(通俗的讲就是查询用户名和密码的过程,把查询用户名密码写到这个接口里)
2. PasswordEncoder接口:
Web权限方案(三种)
-
通过配置文件
-
通过配置类
Spring会在上两种方法中找用户名,如果没有去找UserDetailsService接口
-
自定义编写实现类
导入MP依赖并且编写配置文件
继承BaseMapper<实体类>
修改UserDetails类
启动测试
进一步优化
配置类中重写如下方法
编写配置类中定义的页面和controller
授权
配置无权限自定义页面
- 定义一个页面
- 把自定义的页面填写到配置中
注解的使用
用户必须拥有相应的角色才能访问方法
@PreAuthorize适合进入方法前进行权限校验
自动登录
具体实现