Estoy usando las rutas API de Next.js: https://nextjs.org/docs/api-routes/introduction , pero no sé cómo protegerlas del público.
Ahora esas rutas son públicas en mi servidor de producción.
Por ejemplo: cuando voy a mysite.com/api/cats en el navegador, devuelve:
{ success: true, data: [...] }Por favor, ayuda, ¿cómo escondo esas rutas API del público?
Si evita que el navegador solicite la URL, el usuario no verá los datos cuando escriba la URL en la barra de direcciones y su JavaScript no los verá cuando realice una solicitud Ajax a la misma URL.
No puede ocultar los datos del usuario del navegador y al mismo tiempo permitir que su aplicación se ejecute en el mismo navegador para acceder a ellos.
Usando getSession()# Puede proteger las rutas API usando el método getSession().
Usando getToken()# Si está usando JSON Web Tokens, puede usar el ayudante getToken() para acceder al contenido del JWT sin tener que manejar el descifrado/verificación de JWT usted mismo. Este método solo se puede usar en el lado del servidor.
Consulte aquí: https://next-auth.js.org/tutorials/secure-pages-and-api-routes#:~:text=You%20can%20protect%20API%20routes%20using%20the%20getSession()% 20método .
1.Usar autenticación:
export default async function apiRouteName(req, res) { //way of getting the token totally depends on your preference let token = req.cookies.jwtToken || req.headers.jwtToken || req.query.jwtToken if(!token) { return res.status(401).json({message:"you are not allowed"}); } let data = {}; //store your data in this variable return res.status(200).json({data}) }2.Middleware:
import { NextResponse } from "next/server"; export function middleware (req , event ) { //way of getting the token totally depends on your preference let token = req.cookies.jwtToken || req.headers.jwtToken if (!token ) { return NextResponse.redirect('/login'); } return NextResponse.next(); }