node.js - 快递智威汤逊还记得我吗?
问题描述
我目前在前端使用 Vue,在后端使用 Express,并使用 Express 的JSONWebToken
插件来处理身份验证。但是现在,我不知道如何将 jwt 安全地存储在 cookie 中,以及如何从中获取 User 对象。我发现了很多博客文章、教程等,但没有一个能满足我的需求。非常感谢!
解决方案
基本上,JWT 在 httpOnly cookie 中是安全的。仍然存在一些实际问题。要使用简单的 accessToken 解决问题,您需要创建一个额外的 refreshToken(看看那篇文章
您将 refreshToken 存储在 cookie 中,将 accessToken 存储在简单的缓存中。
首先您需要验证发送的 jwt。您可以使用verify
jwt 包中的方法执行此操作。
如果成功,您将从该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();
};
推荐阅读
- input - 电视信号源/输入/HDMI 更改时的 tvOS 通知
- android-linearlayout - 在布局中将文本彼此对齐
- html - 表单不重定向到进程文件。PHP
- php - 你能在 PHP 中为 Twig 视图生成文档吗?
- java - 如何使用java删除我的mysql数据库的最新行
- ios - 视频导出失败显示错误 AVAssetExportSessionStatusFailed
- swift - 使用 IBDesignable 以编程方式从 Assets 访问 NSImage
- mongodb - MongoDB如何根据多个日期获取文档
- c++ - 我可以使用函数指针调用虚拟析构函数吗?
- javascript - 如何在没有 ID 选择器的情况下删除元素的类 - 使用 vanilla JavaScript(无 jquery)?