首页 > 解决方案 > 快递智威汤逊还记得我吗?

问题描述

我目前在前端使用 Vue,在后端使用 Express,并使用 Express 的JSONWebToken插件来处理身份验证。但是现在,我不知道如何将 jwt 安全地存储在 cookie 中,以及如何从中获取 User 对象。我发现了很多博客文章、教程等,但没有一个能满足我的需求。非常感谢!

标签: node.jsexpressvue.jsjwt

解决方案


基本上,JWT 在 httpOnly cookie 中是安全的。仍然存在一些实际问题。要使用简单的 accessToken 解决问题,您需要创建一个额外的 refreshToken(看看那篇文章

您将 refreshToken 存储在 cookie 中,将 accessToken 存储在简单的缓存中。

首先您需要验证发送的 jwt。您可以使用verifyjwt 包中的方法执行此操作。

如果成功,您将从该verify方法中获取有效负载。在有效负载中是用户,您可以将其解析为您的对象。

这是一个基本的 javascript 实现:

export const isAuth = ({ context }, next) => {
  const authorization = context.req.headers['authorization'];

  if (!authorization) {
    throw new Error('not authenticated!');
  }

  try {
    const token = authorization.split(' ')[1];
    const payload = verify(token, process.env.ACCESS_TOKEN_SECRET!);
    context.payload = payload;
  } catch (err) {
    console.log(err);
    throw new Error('not authenticated!');
  }

  return next();
};

推荐阅读