“JsonWebTokenError:必须提供秘密或公钥”错误

问题描述 投票:0回答:1

我是 JWT 和 Axios 的新手,当我创建帖子时,我不断收到标题中的错误,但使用登录时生成的令牌登录、注册和密码重置工作得很好。请帮忙,

邮政路线

router.post("/create-post", userAuth, createPost);

用户验证

const userAuth = async (req, res, next) => {
const authHeader = req?.headers?.authorization;

if (!authHeader || !authHeader?.startsWith("Bearer")) {
next("Authentication== failed");
}

const token = authHeader?.split(" ")[1];

try {
const userToken = JWT.verify(token, process.env.JWT_SECRET_KEY);

req.body.user = {
  userId: userToken.userId,
};

next();
} catch (error) {
console.log(error);
next("Authentication failed");
}

};

创建帖子

export const createPost = async (req, res, next) => {
try {
const { userId } = req.body.user;
const { description, image } = req.body;

if (!description) {
  next("You must provide a description");
  return;
}

const post = await Posts.create({
userId,
description,
image,
});


res.status(200).json({
success: true,
message: "Post created successfully",
data: post,
});
}  catch (error) {
console.log(error);
res.status(404).json({ message: error.message });
}
};

客户端/后期功能

const handlePostSubmit = async (data) => { 设置发布(真) setErrMsg("")

try {
  const uri = file && (await handleFileUpload(file));
  const newData = uri ? { ...data, image: uri } : data;

  console.log(newData);



  const res = await apiRequest({
    url: "/posts/create-post",
    token: user?.token,
    data: newData,
    method: "POST",
  });

  console.log(res);

  if (res?.status === 'failed') {
    setErrMsg(res);
  } else {
    reset({
      description: '',
    });
    setFile(null);
    setErrMsg('');
    await fetchPost();
  }
  setPosting(false);

} catch (error) {
  console.log(error);
  setPosting(false);
}

};

reactjs express jwt token express-jwt
1个回答
0
投票

您标题中的错误是说它找不到您在

JWT.verify(token, process.env.JWT_SECRET_KEY);
函数中提供的密钥。问题出在
process.env.JWT_SECRET_KEY
部分,可能存在拼写错误。与您的 env 文件交叉检查并尝试将其记录到控制台。根据错误,其值为
null
undefined

© www.soinside.com 2019 - 2024. All rights reserved.