前端传递 Token
- 存储 Token:通常在用户登录成功后,将服务器返回的 Token 存储在前端,常见的存储方式有
localStorage
、sessionStorage
或 cookie
。例如,使用 localStorage
:
// 登录成功后
const token = 'your_generated_token';
localStorage.setItem('token', token);
- 在请求中传递 Token:在向后端 API Routes 发送请求时,将 Token 放在请求头中。以
fetch
为例:
const token = localStorage.getItem('token');
fetch('/api/your - route', {
headers: {
'Authorization': `Bearer ${token}`
}
})
.then(response => response.json())
.then(data => console.log(data));
后端 API Routes 验证 Token
- 引入依赖:在 Next.js 的 API Routes 中,可以使用
jsonwebtoken
库来验证 JWT Token。首先安装:
npm install jsonwebtoken
- 验证逻辑:在 API Route 处理函数中进行验证。假设使用 Node.js 和 Express 的风格:
import jwt from 'jsonwebtoken';
export default function handler(req, res) {
const token = req.headers.authorization;
if (!token) {
return res.status(401).json({ message: 'Token is missing' });
}
const actualToken = token.split(' ')[1];
try {
const decoded = jwt.verify(actualToken, 'your_secret_key');
// 如果验证成功,继续处理请求
res.status(200).json({ message: 'Token is valid' });
} catch (error) {
return res.status(401).json({ message: 'Invalid Token' });
}
}
验证失败时返回的状态码及信息
- 状态码:通常返回
401 Unauthorized
,表示未授权访问。
- 信息:返回一个包含错误信息的 JSON 对象,如
{ "message": "Token is missing" }
或 { "message": "Invalid Token" }
,告知前端具体的错误原因。