**基本原理: ** 主要原理同上一篇, 缺陷: 无法实时下线用户,因为有短token的窗口期 登录时后端颁发长短期的双token(jwt+refresh), jwt进行接口校验, 失效时用refresh获取新的jwt及新的refresh,这次jwtid存的是rtToken 差异点: accesst
基本原理: token签发时分别在redis存入jwtid和jwtid的数组, 同时用数组剔除最老的jwtid并拉黑, 然后存入新的jwtid, 数组长度决定允许多少端点登录 guard层对解析出的userid和jwtid进行合法性校验 通过对jwtid和数组的控制可以实现自动或主动失效 常规配置简
正常的数据都是nestjs接管了响应的, 所以可以直接return,而要设置cookie需要手动调用res 首先全局设置允许cookies携带跨域 import cookieParser from 'cookie-parser'; app.use(cookieParser()); app.
需求: 全局接口根据不同用户限流(默认的是根据接口,无论谁请求) 先配置ThrottlerModule,本项目使用的是@liaoliaots/nestjs-redis, 结合ioredis, 所以需要ThrottlerStorageRedisService包裹, 也可以直接配置url,不需要此依赖
当前项目前置条件及注意事项: 默认已配置好jwt,可以获取到用户信息; 安装依赖包 @casl/ability @casl/prisma @casl/prisma版本需要使用2.0.0-alpha.3(待议,正式版???可能没有条件condition能力) 以下示例代码中PgService其实是Pr
功能需求: 在自己的网站让用户扫码进行支付 整体流程 1. 前端发起请求, 传递订单或支付参数给后端 2. 后端将参数整合, 包含回调url, 加密签名后调用微信api, 成功响应后会收到微信返回的二维码字符信息, 交给前端 3. 前端自行将字符生成二维码, 用户扫码后, 微信会请求回调url通知结
开启静态文件服务, 同时开启cors允许跨域访问, 需要注意的是,静态目录和打包后目录不同,生产环境部署时需要进行处理 // app.module.ts import { ServeStaticModule } from '@nestjs/serve-static'; @Module({ im
前端根据权限控制展示与否, 后端拦截接口是否允许调用. 本案例使用token存储用户角色id数组, 根据roleIds从权限表里查询出所有的权限名,从而进行拦截, 权限名采用LOG_DELETE MENU_UPDATE形式, 方便维护定位管理 创建Permissions装饰器 import { Se
nestjs自动导入module模块 在开发项目过程中,一般都是手动导入模块,但在大型项目中,就显得不太优雅,且本人记忆力不好,容易遗漏导入! 所以动手写个自动导入功能! 1 . 主要原理,使用node自带的require.context读取目录下相应文件, typescript下需要安装类型依赖@