密钥的获取生成及token生成

一、密钥的获取和存储
密钥是存储在redis缓存中的。密钥的作用:用来生成链接webscort所需的token。
1.1、密钥的获取

  1. static async jwtSecretGet() {
  2. let jwtSecret
  3. let config = xconfig('modules.redisConfig') // redis的配置
  4. let rdbAv = new Redis(config);
  5. let key = 'avs:jwtSecret'
  6. jwtSecret = await rdbAv.hget(key, 'value') // 获取不到时返回的null
  7. return jwtSecret
  8. }

1.2、密钥的存储

  1. static async jwtSecretSet(param) {
  2. let config = xconfig('modules.redisConfig')
  3. let rdbAv = new Redis(config);
  4. let key = 'avs:jwtSecret'
  5. return await rdbAv.hmset(key, {"value": param.jwtSecret})
  6. }

密钥的存储和获取,都可以通过后台管理设置。当然了,只有管理员才具有这些操作权限。
二、token的生成
token的生成需要使用到 jwt-simple的npm包。这个jwt-simple包是用来对密钥进行加密的。
jwt-simple的安装:npm install jwt-simple —save
jwt-simple的github地址:https://github.com/hokaccha/node-jwt-simple

  1. static async encryptSecret(id,accountNo) {
  2. let jwtSecret = await this.jwtSecretGet() // 调用的是密钥的获取
  3. let time = (new Date()).valueOf() + 24 * 60 * 60 * 1000 // 过期时间
  4. var payload = {
  5. uid: id, // 用户ID
  6. accountNo: accountNo, // 用户账号
  7. t: time // 过期时间
  8. }
  9. var secret = jwtSecret
  10. var token = jwt.encode(payload, secret) // 使用jwt-simple进行加密生成token
  11. return token
  12. }