如何在 next.js 14 中处理移动应用程序的身份验证

问题描述 投票:0回答:1

我想创建一个 next.js 14 应用程序并使用其 api 路由连接 RN 移动应用程序。但问题是我是 next.js 的新手,对 cookie 没有太多经验或了解,但我曾使用过express.js 和 JWT 令牌。

我能找到的所有帮助材料和教程都使用会话或 cookie 以及 nextauth 之类的包来处理适用于 next.js Web 应用程序客户端的身份验证,但移动应用程序又如何呢?我如何使用 nextauth 包在 RN 移动应用程序中对 api 进行身份验证。我可以将 jwt 令牌用于移动路由和 Web 前端会话,还是有更好的方法来处理这种情况?

react-native authentication next-auth next.js14
1个回答
0
投票

安全 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',
  }
});
© www.soinside.com 2019 - 2024. All rights reserved.