【发布时间】:2021-08-30 23:57:11
【问题描述】:
我正在制作一个简单的登录函数,它将返回一个带有用户 ID 的令牌。
我已经使用密钥在 fastify 实例上注册了 fastify-jwt
并在对签名函数的调用中添加了用户 ID。
代码auth.js
import Fastify from "fastify";
import fastifyJwt from "fastify-jwt";
import { users } from "../dummy-data/users.js";
const fastify = Fastify();
const SECRET_KEY = "secret";
fastify.register(fastifyJwt, { secret: SECRET_KEY });
......
const signIn = function (req, res) {
const { email, password } = req.body;
const foundUser = users.find(
(user) => user.email === email && user.password === password
);
const { id } = foundUser;
const accessToken = fastify.jwt.sign({ id }, SECRET_KEY);
res.status(200).send({ accessToken });
}
但这不起作用,它显示此错误:
"message": "预期的 "options" 是一个普通对象。"
{
"statusCode": 500,
"error": "Internal Server Error",
"message": "Expected \"options\" to be a plain object."
}
有人知道正确的方法吗?
【问题讨论】:
-
signIn是如何使用的?让您说“这不起作用”的预期结果与实际结果是什么? (从这里和根据文档,.sign方法不需要SECRET_KEY作为第二个参数,尽管确实链接的 JWT 规范要求它。) -
我很困惑,因为 JWT 要求提供密钥。我发现
fastify-jwt分配时不需要 SECRET_KEY。
标签: node.js jwt fastify fastify-jwt