密钥的获取生成及token生成
一、密钥的获取和存储
密钥是存储在redis缓存中的。密钥的作用:用来生成链接webscort所需的token。
1.1、密钥的获取
static async jwtSecretGet() {
let jwtSecret
let config = xconfig('modules.redisConfig') // redis的配置
let rdbAv = new Redis(config);
let key = 'avs:jwtSecret'
jwtSecret = await rdbAv.hget(key, 'value') // 获取不到时返回的null
return jwtSecret
}
1.2、密钥的存储
static async jwtSecretSet(param) {
let config = xconfig('modules.redisConfig')
let rdbAv = new Redis(config);
let key = 'avs:jwtSecret'
return await rdbAv.hmset(key, {"value": param.jwtSecret})
}
密钥的存储和获取,都可以通过后台管理设置。当然了,只有管理员才具有这些操作权限。
二、token的生成
token的生成需要使用到 jwt-simple的npm包。这个jwt-simple包是用来对密钥进行加密的。
jwt-simple的安装:npm install jwt-simple —save
jwt-simple的github地址:https://github.com/hokaccha/node-jwt-simple
static async encryptSecret(id,accountNo) {
let jwtSecret = await this.jwtSecretGet() // 调用的是密钥的获取
let time = (new Date()).valueOf() + 24 * 60 * 60 * 1000 // 过期时间
var payload = {
uid: id, // 用户ID
accountNo: accountNo, // 用户账号
t: time // 过期时间
}
var secret = jwtSecret
var token = jwt.encode(payload, secret) // 使用jwt-simple进行加密生成token
return token
}