我正在使用JWT
实现Access Token
和Refresh Token
,用于NodeJS
应用程序中的登录功能。我尝试使用Redis
来存储Refresh Token
,但得到以下代码:
redis.js
const redis = require('redis');
require('dotenv').config({ path : __dirname + '/../config/env/.env' });
let redisClient;
redisClient = redis.createClient(6379, '127.0.0.1');
module.exports = redisClient;
字符串
authRoute.js
'use strict';
const JwtUtil = require('../../middlewares/jwt-util');
const redisClient = require('../../middlewares/redis');
const authRouter = require('express').Router();
const jwt = new JwtUtil();
authRouter.post('/user-token/generate', (req, res, next) => {
const accessToken = jwt.sign(req.body);
const refreshToken = jwt.refresh();
redisClient.set(req.body.id, refreshToken);
res.status(200).send({
result : 'success',
data : {
accessToken,
refreshToken
}
});
});
module.exports = authRouter;
型
我已经打印了几个日志,但似乎redisClient.set(req.body.id, refreshToken);
在authRoute.js
。中似乎有一个错误。
UnhandledPromiseRejection警告:错误:客户端已关闭
(node:24640)UnhandledPromiseRejectionWarning:未处理的promise拒绝。这个错误可能是由于在没有catch块的async函数内部抛出,或者是由于拒绝了一个没有用.catch()处理的promise。要在未处理的promise拒绝时终止节点进程,请使用CLI标志--unhandled-rejections=strict
(参见https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode)。(拒绝ID:2)(节点:24640)[DEP0018]弃用警告:不建议使用未处理的promise拒绝。将来,未处理的promise拒绝将使用非零退出代码终止Node.js进程。Access Token
和Refresh Token
正常发行。另外,下面的代码不起作用。我不知道该如何重写代码。我该怎么办?
redisClient.on('connection', () => {
console.info('Redis connected!');
}
型
虽然我使用的是Windows
,但我下载了Redis
,执行了ping
测试,并确认服务器正在运行。
3条答案
按热度按时间jdg4fx2g1#
至于现在,我能够解决部分获得数据,但对于集数据仍然没有为redis v4做.#redisv4 # redisv4
字符串
vq8itlhq2#
根据文档,客户端需要通过
connect()
函数显式连接,以便将命令发送到目标Redis节点:字符串
bvhaajcl3#
我在index.js启动文件中实现了连接redis v6.2的方法。
字符串