学习笔记
Java基础相关
JVM内存模型及线程空间
动态代理
java并发编程
Java中Future
移动端相关
杂乱整理
开发工具相关
Git cmd学习整理
Markdown用法大全集
【2023年12月】工作常用
Git如何单独合并某次提交到另一个分支
前端开发相关
Node+TypeScript相关记录
TypeScript 读写 MariaDB
Node TypeScript项目 token生成、管理及拦截校验的实现
TypeScript+Express创建和实现一个服务示例
Express接口处理器抽取注册方式
Express 实现 RESTful API
创建 TypeScript Express 项目,并配置直接用 npm start 运行
TypeScript + Express 实现文件下载接口
export 和 export default的区别
TypeScript+Express 实现用户注册和登录接口
TypeScript 和 JavaScript 中,`===` 和 `==`
CSS中的尺寸大小标准
小程序px和rpx
使用Python快速处理Excel的合并拆分
读书写作相关
一些句子01
李敖语录
罗翔老师的一些经典语句
周易相关知识
周易是对自然描述还是为自然立法
40句落寞诗词,穿透柔魂弱魄
杂玩整理
黑苹果睿频问题
基于纯Linux自己部署Nas构思
Ubuntu换源
Ubuntu挂载tf卡
Ubuntu运行Docker报错
Ubuntu安装运行Docker报错处理
官方镜像安装Docker
Docker 设置root dir 切换数据到其他存储位置
systemctl stop docker 报错
NextCloud安装ffmpeg 显示视频缩略图
Docker源不生效解决方式
Docker源不生效解决方式II——搭建docker-hub镜像
搞定群晖总Docker部署gitea启用ssh协议
MacOS一键安装命令软件列表
Java基础知识
精选网站
有声主播知识
学习笔记
有声主播入门到进阶
有声主播新手的入门练手内容推荐
DeepSeek分析喜马拉雅旗下 喜播平台 的有声主播培训
录书设备资料1
典故专辑资料整理
0B. 脚本和大纲
01. 柳赠别——灞桥烟雨中的离愁
0A. 前置准备资料
Ai大数据模型
模型整理
使用 DeepSeek 通用公式
学会这8招,让DeepSeek变得超好用!
大数据购物分析选优
Windows和Ubuntu部署DeepSeek性能差距
本地部署 Ollam+DeepSeek 探索爬坑
模型对比测试
-
+
首页
Node TypeScript项目 token生成、管理及拦截校验的实现
在 TypeScript 中,您可以使用 JSON Web Token(JWT)生成和管理令牌,并将其用于身份验证和授权。以下是一些关于如何在 TypeScript 中实现 JWT 的示例代码: ### 生成 JWT ```javaScript import jwt from "jsonwebtoken"; const secretKey = "mysecretkey"; interface User { id: number; name: string; } function generateToken(user: User): string { return jwt.sign({ user }, secretKey, { expiresIn: "1h" }); } ``` 此示例使用 `jsonwebtoken` 库生成 JWT。它定义了一个名为 `User` 的接口,包含用户的 ID 和名称。然后它定义了一个函数 `generateToken()`,它接受 `User` 对象并返回一个字符串表示的 JWT。`jwt.sign()` 函数将用户对象作为负载传递,并使用 `secretKey` 进行签名。选项 `{ expiresIn: "1h" }` 表示令牌将在一小时后过期。 ### 校验 JWT ```javaScript import jwt from "jsonwebtoken"; const secretKey = "mysecretkey"; interface User { id: number; name: string; } function verifyToken(token: string): User | null { try { const decoded = jwt.verify(token, secretKey); return (decoded as any).user as User; } catch (err) { return null; } } ``` 此示例实现了一个名为 `verifyToken()` 的函数,它接受一个字符串形式的 JWT,并尝试对其进行验证。`jwt.verify()` 函数将 JWT 解码为 JSON 对象,并根据签名验证其完整性。如果验证成功,它将返回一个对象,其中包含负载和签名信息。在这种情况下,我们期望负载包含一个名为 `user` 的属性,该属性包含用户对象。因此,我们可以通过 `(decoded as any).user` 访问它,并将其强制转换为 `User` 类型。 ### 拦截校验 JWT ```javaScript import express from "express"; import jwt from "jsonwebtoken"; const app = express(); const secretKey = "mysecretkey"; interface User { id: number; name: string; } app.use((req, res, next) => { const authHeader = req.headers.authorization; if (authHeader) { const token = authHeader.split(" ")[1]; try { const decoded = jwt.verify(token, secretKey); (req as any).user = (decoded as any).user as User; } catch (err) { return res.status(401).send({ message: "Invalid or expired token" }); } } next(); }); app.get("/", (req, res) => { const user = (req as any).user as User; res.send(`Hello, ${user.name}!`); }); ``` 此示例使用 Express 构建了一个简单的 Web 应用程序,并实现了一个中间件函数来拦截和校验 JWT。中间件函数检查 HTTP 请求头 `Authorization` 中是否存在 JWT,如果存在,则尝试对其进行验证。如果验证失败,则向客户端发送 401 状态码和错误消息。否则,它将从 JWT 中提取用户对象,并将其存储在请求对象 `req` 的自定义属性 `user` 中。 最后,该应用程序实现了一个简单的路由处理程序来向客户端发送欢迎消息。该处理程序从请求对象的 `user` 属性中提取用户对象,并使用其名称构造响应。
嘿手大叔
2024年12月13日 11:00
转发文档
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
Markdown文件
分享
链接
类型
密码
更新密码