使用Thunder Client测试JWT令牌时提示'invalid token'认证失败求助
使用Thunder Client测试JWT接口认证时遇到"invalid token"错误
用Thunder Client测试基于JWT令牌的接口认证,令牌能正常生成,但访问受保护路由时始终返回"Invalid Token"错误(状态码400 Bad Request)。已尝试更换不同用户生成的令牌、升级Thunder Client版本、使用新生成的令牌,问题依旧存在。
令牌生成代码(可正常运行)
const express = require('express'); const app = express(); const connectDB = require('./db/db'); const User = require('./models/User'); const jwt = require('jsonwebtoken'); app.use(express.json()); app.post('/token', async (req, res, next) => { try { const token = jwt.sign(user._doc, 'secret-key', { expiresIn: '2h' }) return res.status(200).json({ message: "Token generated successfully", token }); } catch (e) { next(e); } });
成功生成的令牌示例
{ "message": "Token generated successfully", "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJfaWQiOiI2NjYzNDVkMDRjODMxZDA4YWQ5MzQ5NzEiLCJuYW1lIjoia2F0ZSIsImVtYWlsIjoia2F0ZUBrLmNvbSIsInJvbGVzIjpbIkFETUlOIl0sImFjY291bnRTdGF0dXMiOiJQRU5ESU5HIiwiX192IjowLCJpYXQiOjE3MTgwMzU3NTEsImV4cCI6MTcxODAzOTM1MX0.qkF_UxmQs34uYLeOi9rj3pS8y-FSLX0QNjLCzFz_7Ls" }
Thunder Client测试请求头设置
Accept: */* agent: Thunder Client Authorization: Bearer {{token}}
受保护路由(/product)验证代码
app.get('/product', async (req, res) => { let token = req.headers.authorization console.log('token: ' + token) if (!token) { return res.status(401).json({ message: 'Un-authorization access' }); } try { token = token.split(' ')[1]; const decoded = jwt.verify(token, 'secret-key'); const user = await User.findById(decoded._id); console.log(user); if (!user) { return res.status(401).json({ message: 'Un-authorization user access' }); } } catch (e) { return res.status(400).json({ message: 'Invalid Token' }); } return res.status(200).json({ message: 'I am a private route' }); })
错误响应
{ "message": "Invalid Token" }
状态码:400 Bad Request
内容的提问来源于stack exchange,提问作者say
相关产品推荐
相关产品推荐

