**1. PasswordEncoder接口**
```java
/* org.springframework.security.crypto.password.PasswordEncoder */
public interface PasswordEncoder {
//把参数按照特定的解析规则进行加密
String encode(CharSequence var1);
//解析原始密码var1与被加密后的密码var2是否相同,相等返回true
boolean matches(CharSequence var1, String var2);
//将被解析的密码再次进行解析且达到更安全的结果则返回 true,否则返回false。默认返回false。
default boolean upgradeEncoding(String encodedPassword) {
return false;
}
}
```
PasswordEncoder 接口有很多的实现类,其中 BCryptPasswordEncoder 是 Spring Security 官方推荐的密码解析器,平时多使用这个解析器。BCryptPasswordEncoder 是对 bcrypt 强散列方法的具体实现。是基于 Hash 算法实现的单向加密。可以通过 strength 控制加密强度,默认 10。
```java
//无参构造器密码强度默认为10
public BCryptPasswordEncoder()
//可以通过strength自定义密码强度
public BCryptPasswordEncoder(int strength)
```
<br/>
**2. BCryptPasswordEncoder密码加密**
```java
@Test
void contextLoads01() {
//创建密码解析器
BCryptPasswordEncoder bCryptPasswordEncoder = new BCryptPasswordEncoder();
//对密码进行加密,对于同一个密码每次计算的结果都是不一样的
String atguigu = bCryptPasswordEncoder.encode("atguigu");
//判断密码加密后和加密之前是否匹配
boolean result = bCryptPasswordEncoder.matches("atguigu", atguigu);
//加密后:$2a$10$xU2LGUz7TkmT11wlf5CB7ealBV4mLsbtOCRXWs8ydlRGnlsNJIP2y
System.out.println("加密后:" + atguigu);
//比较结果:true
System.out.println("比较结果:" + result);
}
```
- 跨域问题
- 跨域是什么
- 跨域解决方案
- 从后端解决
- nginx反向代理
- WebSocket
- websocket是什么
- websocket协议
- 使用场景
- 实现方式
- 注解与html5原生方式
- websocketAPI
- 实现步骤
- 文件上传
- 文件下载
- 广播通信
- 定时推送
- 编程与socketjs方式
- socketjs与stompjs框架
- 实现步骤
- 重载目的地
- SimpMessagingTemplate
- 定时向前端推送数据
- 5种监听事件
- 点对点通信
- 拦截器
- HandshakeInterceptor
- ChannelInterceptor
- poi之excel表格
- 表格版本
- POI常用类
- POI依赖
- 写表格
- 编写表格过程
- 单元格边框样式
- 单元格背景色
- 冻结行或列
- 单元格合并
- 单元格内换行
- 文档内跳转
- 读表格
- Web中的Excel操作
- 导出表格
- 读取表格
- poi之word文档
- word版本
- 写word
- 基本使用
- 标题样式
- 添加图片
- EasyExcel表格
- EasyExcel是什么
- 与其他Excel工具对比
- EasyExcel依赖
- 读Excel
- 简单读取
- 指定列位置
- 读取多个sheet
- 格式转换
- 多行表头
- 同步读
- 写Excel
- 简单写入
- 单元格样式
- 拦截器
- 列宽
- 冻结行或列
- 合并单元格
- 填充Excel
- SpringSecurity
- SpringSecurity是什么
- 同类型产品对比
- 环境搭建
- 相关概念
- 密码加密
- Web权限控制
- UserDetailsService接口
- 登录认证
- 自定义登录页
- 未授权跳转登录页
- 权限控制
- 自定义403页面
- 权限注解
- 记住我功能
- 注销功能
- CSRF
- CSRF是什么
- CSRF保护演示
- 前后端分离权限控制
- 环境搭建
- 认证实现
- 会话管理
- 动态权限管理
- 微服务权限控制
- 权限控制方案
- SpringBoot整合RabbitMQ
- 整合步骤
- Fanout交换机演示
- Direct交换机演示
- Topic交换机演示
- @RabbitListener方法
- JWT认证与授权
- 环境搭建
- 密码加密
- 认证与授权