密钥的获取生成及token生成
一、密钥的获取和存储
密钥是存储在redis缓存中的。密钥的作用:用来生成链接webscort所需的token。
1.1、密钥的获取
static async jwtSecretGet() {let jwtSecretlet config = xconfig('modules.redisConfig') // redis的配置let rdbAv = new Redis(config);let key = 'avs:jwtSecret'jwtSecret = await rdbAv.hget(key, 'value') // 获取不到时返回的nullreturn 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, // 用户IDaccountNo: accountNo, // 用户账号t: time // 过期时间}var secret = jwtSecretvar token = jwt.encode(payload, secret) // 使用jwt-simple进行加密生成tokenreturn token}
