2
Jwt

yutent edited this page 2023-11-02 18:12:16 +08:00

Json Web Token

JWT的作用, 跟Session类似。区别是JWT对cookie没有依赖, 对跨域操作, 多域名项目更有优势。

JWT的数据,是明文(仅仅做了base64转码)存于token中的, 所以请勿在JWT中储存敏感数据。这些敏感数据, 请使用redis, memcache等储存。

使用

这里先看一下默认的配置:

jwt: {
  ttl: 3600 * 24 * 7,
  level: 0, // 校验级别, 0: 不校验客户端, 2: ua, 4: ip, 6: ua + ip
  secret: 'it_is_secret_key' // jwt密钥, 使用时请修改
}
  • ttl <Number> 有效期, 单位秒, 默认7天, 客户端一直有请求时, 会实时更新有效期。
  • level <Number> 安全校验等级, 默认不校验, 即只要拿到ssid, 无论是谁请求都是合法的; 可根据业务需要, 设置相应的安全校验, 如, useragent、 ip。
  • secret <String> 【必须】JWT的加密密钥, 正式使用时, 必须设为私有的密钥, 且不要外泄, 否则token就有可能被伪造。

框架默认已经安装了会话拓展包, 但是并未启用; 且在控制器基类中封装了一个操作jwt的方法, 一般情况下, 只需要关心那个方法的使用即可。


import { createJwt, JwtModule } from '@gm5/jwt'

app
  .install(JwtModule, { secret: 'xxxxxxxx-xxxx-xxxxxxxx' })
  .use(createJwt())