我想创建一个 next.js 14 应用程序并使用其 api 路由连接 RN 移动应用程序。但问题是我是 next.js 的新手,对 cookie 没有太多经验或了解,但我曾使用过express.js 和 JWT 令牌。
我能找到的所有帮助材料和教程都使用会话或 cookie 以及 nextauth 之类的包来处理适用于 next.js Web 应用程序客户端的身份验证,但移动应用程序又如何呢?我如何使用 nextauth 包在 RN 移动应用程序中对 api 进行身份验证。我可以将 jwt 令牌用于移动路由和 Web 前端会话,还是有更好的方法来处理这种情况?
安全 Next.js API 路由示例 (pages/api/secure-endpoint.js):
import jwt from 'jsonwebtoken';
// Secret key for signing/verifying the JWT (ensure this is stored securely, e.g., in environment variables)
const SECRET_KEY = process.env.JWT_SECRET;
export default async function handler(req, res) {
const token = req.headers.authorization?.split(' ')[1]; // Extract token from Authorization header
if (!token) {
return res.status(401).json({ message: 'Unauthorized, token missing' });
}
try {
// Verify the token
const decoded = jwt.verify(token, SECRET_KEY);
// Proceed with your logic if token is valid
return res.status(200).json({ message: 'Success', user: decoded });
} catch (error) {
return res.status(401).json({ message: 'Invalid or expired token' });
}
}
然后你可以在 Android 上使用它,如下所示:
fetch('https://your-nextjs-app.com/api/secure-endpoint', {
method: 'GET',
headers: {
'Authorization': `Bearer ${token}`, // JWT sent from mobile app
'Content-Type': 'application/json',
}
});