二、SpringSecurity相关概念
1、概念
- 主体:
- 英文单词:principal
- 含义:使用系统的用户或设备或从其他系统远程登录的用户等等。简单说就是**谁使用系统谁就是主体**。
- 认证:
- 英文单词:authentication
- 含义:权限管理系统确认一个主体的身份,允许主体进入系统。简单说就是**“主体”证明自己是谁**。笼统的认为就是以前所做的登录操作。
- 授权
- 英文单词:authorization
- 含义:将操作系统的“权力” “授予” “主体”,这样主体就具备了操作系统中特定功能的能力。
2、重点过滤器概述
- FilterSecurityInterceptor
- 是一个方法级的权限过滤器, 基本位于过滤链的最底部。
- ExceptionTranslationFilter:
- 是个异常过滤器,用来处理在认证授权过程中抛出的异常
- UsernamePasswordAuthenticationFilter :
- 对/login 的 POST 请求做拦截,校验表单中用户名,密码。
3、重点接口概述
- UserDetailsService 接口
- 当什么也没有配置的时候,账号和密码是由 Spring Security 定义生成的。而在实际项目中**账号和密码都是从数据库中查询出来的。 所以我们要通过自定义逻辑控制认证逻辑。如果需要自定义逻辑时,只需要实现 UserDetailsService 接口即可。**
- 返回值 UserDetails :
- 这个类是系统默认的用户“主体”
- 方法参数 username:
- 表示用户名。此值是客户端表单传递过来的数据。默认情况下必须叫 username,否则无法接收。
- PasswordEncoder 接口
- 有两个方法 encode 、 matches需要实现
- encode 方法:
- **表示验证从存储中获取的编码密码与编码后提交的原始密码是否匹配。**如果密码匹配,则返回 true;如果不匹配,则返回 false。第一个参数表示需要被解析的密码。第二个参数表示存储的密码。
- matches 方法:
- 表示如果解析的密码能够再次进行解析且达到更安全的结果则返回 true,否则返回false。默认返回 false。