# JWT在使用过程中的注意事项
## `JWT`的几个特点
(1)`JWT` 默认是不加密,但也是可以加密的。生成原始 Token 以后,可以用密钥再加密一次。
(2)`JWT` 不加密的情况下,不能将秘密数据写入`JWT`。
(3)`JWT` 不仅可以用于认证,也可以用于交换信息。有效使用 `JWT`,可以降低服务器查询数据库的次数。
(4)`JWT` 的最大缺点是,由于服务器不保存 session 状态,因此无法在使用过程中废止某个 token,或者更改 token 的权限。也就是说,一旦 `JWT` 签发了,在到期之前就会始终有效,除非服务器部署额外的逻辑。
(5)`JWT` 本身包含了认证信息,一旦泄露,任何人都可以获得该令牌的所有权限。为了减少盗用,`JWT` 的有效期应该设置得比较短。对于一些比较重要的权限,使用时应该再次对用户进行认证。
(6)为了减少盗用,`JWT` 不应该使用 HTTP 协议明码传输,要使用 `HTTPS` 协议传输。
> `JWT Token` 一旦签发,就会在有效期内一直可用,无法在服务端废止,当用户进行登出操作,只能依赖客户端删除掉本地存储的 `JWT Token`,如果需 要禁用用户,单纯使用 `JWT` 就无法做到了。
## 安全性相关
如果加强 `JWT` 的安全性? 总结以下几点:
一定要保存好服务端的`secret`,防止泄露给客户端。
缩短 `token 有效时间 使用安全系数高的加密算法` `token` 不要放在 `Cookie` 中,有 `CSRF`风险 使用 `HTTPS` 加密协议 对标准字段`iss`、`sub`、`aud`、`nbf`、`exp` 进行校验
- 项目介绍
- 课前准备
- 前言
- APP端开发
- HBuildX快速创建uniapp项目
- UniAPP基本知识
- 官方组件练习
- uniapp代码块
- APP登录页面的制作
- 用户注册页面制作
- 密码找回页面制作
- 计价页面制作
- 详情页面制作
- 计价依据页面制作
- VUE快速入门
- Vue在uniapp中的应用
- APP数据模拟
- uniAPP云打包
- UniAPP离线打包
- 后端开发
- ThinkPHP的快速入门
- thinkPHP6.*的安装
- ThinkPHP6的入门介绍
- ThinkPHP6.0中的配置
- 入口文件隐藏
- 命令行工具
- Facade(门面)
- 数据迁移
- 数据填充
- 后端应用的创建
- 路由地址和Url地址的生成
- 后台模板的引入
- 多入口文件的应用以及多入口文件的隐藏
- 后台管理员模块开发
- 管理员表的设计
- 管理员密码的修改
- 验证器的使用
- 管理员登录功能的实现
- 后台权限控制的实现
- 验证码的使用
- 后台系统配置功能开发
- 数据表的分析与设计
- 系统参数配置部分代码的编写
- 类型列表模板的引入
- 配置类型添加
- 配置类型的列表显示
- 类型的编辑与删除
- 代码的优化
- 后台配置类型条目管理
- 会员管理模块
- API接口开发规范和注意事项
- API接口的设计规范
- RestfulAPI
- API接口安全
- 签名
- Postman工具的简单介绍
- API接口应用的创建
- API接口域名部署
- API接口的版本控制
- API接口跨域问题
- API接口开发
- 用户注册接口开发
- 代码的实现
- 完善用户注册接口
- 代码的封装
- 参数过滤
- 签名验证
- 代码结构优化
- 数据验证
- 自定义验证规则
- 全局异常处理
- 异常处理接管
- 手动抛出异常
- 重写HttpException异常类
- 短信接口开发
- 短信接口
- 阿里云短信服务接入
- 完善短信接口
- 完善用户注册接口并实现短信的验证
- 用户密码找回接口开发
- 实现流程与核心代码
- 问题处理
- 用户登录接口开发
- 基本代码的实现
- 用户登录实现
- 用户登录核心代码
- 用户授权验证
- JWT的使用
- JWT的结构
- JWT的安装
- token的生成
- 验证
- JWT使用中的注意事项
- 基础参数接口开发
- API接口的应用
- APP用户登录的实现
- 代码优化
- 用户注册的实现
- 密码找回功能的实现
- 计价功能的实现
- 自动登录的实现
- 用户登录功能限制
- 项目打包(正式包)
- 小程序适配
- 前期准备
- 小程序的调试
- 真机调试
- 多端适配
- ThinkPHP6.0的注意事项
- 关于TP6框架升级问题
- 自定义分页样式