【express-jwt】解析token,获取解析后的内容。(jsonwebtoken)

// 引入解析 token 的中间件
const {
    expressjwt: expressjwt
} = require('express-jwt')

app.use(expressjwt({
    secret: jwtSecretKey, //自己之前定义的密钥
    algorithms: ['HS256'] //不加会报错(这里具体用什么值我还不太了解,本篇重点不在此)
}).unless({
    path: ['/login'] //除了这个地址,其他的URL都需要验证token
}));

如何获取token被解析后的值呢?

重点是这个属性:req.auth

token被express-jwt解析后,会自动将解析好的内容放到请求中的auth属性上。(不同版本可能属性名不同)

我们也可以通过打印请求console.log(req)的方法,了解到token被解析后的内容具体被放到了哪个属性上。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
这里是一个使用 Node.jsexpress-jwt 库来实现 Token 处理和中间件的示例代码: 首先安装需要的依赖库: ``` npm install express express-jwt jsonwebtoken ``` 然后,在 Express 应用程序中添加以下代码: ```javascript const express = require('express'); const jwt = require('jsonwebtoken'); const expressJwt = require('express-jwt'); const app = express(); // 设置加密密钥 const secretKey = 'mysecretkey'; // 创建一个 JWT token const createToken = (payload) => { return jwt.sign(payload, secretKey, { expiresIn: '1h' }); }; // 解析 JWT token const decodeToken = (token) => { return jwt.verify(token, secretKey); }; // 中间件:检查 JWT token 是否有效 const checkToken = expressJwt({ secret: secretKey }); // 使用中间件 app.use(checkToken); // 路由 app.get('/', (req, res) => { res.send('Hello World!'); }); app.get('/login', (req, res) => { // 假设已经验证用户名和密码成功 const token = createToken({ username: 'testuser' }); res.json({ token }); }); app.get('/data', (req, res) => { // 从头部获取 token const token = req.headers.authorization.split(' ')[1]; // 解析 token 中的数据 const decoded = decodeToken(token); res.send(`Welcome, ${decoded.username}!`); }); // 启动服务器 app.listen(3000, () => { console.log('Server is running on port 3000'); }); ``` 在这个示例中,我们创建了一个 JWT token,设置了一个加密密钥,并且在 `/login` 路由中返回了这个 token。在 `/data` 路由中,我们从头部获取 token,并且使用 `decodeToken()` 函数解析出其中的数据。 然后,我们使用 `expressJwt()` 方法创建了一个中间件 `checkToken`,用于检查请求头部中的 token 是否有效。最后,我们通过 `app.use(checkToken)` 将中间件应用到整个应用程序中,使得每个请求都会经过这个中间件进行身份验证。 这样,我们就可以在整个应用程序中使用 JWT token 进行身份验证了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值