MST
星途 面试题库

面试题:Next.js API Routes 如何进行基本的身份验证

在 Next.js 的 API Routes 中,为了保证安全性,常常需要进行身份验证。请阐述如何实现一个基本的基于 Token 的身份验证机制,包括前端如何传递 Token,后端 API Routes 如何验证 Token 的有效性,并简单说明验证失败时应返回的状态码及信息。
19.3万 热度难度
前端开发Next.js

知识考点

AI 面试

面试题答案

一键面试

前端传递 Token

  1. 存储 Token:通常在用户登录成功后,将服务器返回的 Token 存储在前端,常见的存储方式有 localStoragesessionStoragecookie。例如,使用 localStorage
// 登录成功后
const token = 'your_generated_token';
localStorage.setItem('token', token);
  1. 在请求中传递 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

  1. 引入依赖:在 Next.js 的 API Routes 中,可以使用 jsonwebtoken 库来验证 JWT Token。首先安装:
npm install jsonwebtoken
  1. 验证逻辑:在 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" },告知前端具体的错误原因。