Estoy creando una aplicación de express js, usa firebase admin para la autenticación y también estoy usando jwt personalizado para el reconocimiento de usuarios y mongodb para la base de datos.
No conozco el término correcto, pero por lo general rara vez ocurre, por ejemplo, el usuario A está editando su cuenta, pero por alguna razón se edita la cuenta del usuario B.
He creado un middleware de autenticación de usuario.
import { Request, Response, NextFunction } from "express"; import JSONRESPONSE from "../utils/JSONReponse"; import jwt from "jsonwebtoken" import { User } from "../models/User"; export async function AuthMiddleware(req: Request, res: Response, next: NextFunction) { const JSONResponse = new JSONRESPONSE(res); try { const session = req.cookies.session; if (!session) return JSONResponse.notAuthorized(); const decoded = < any > jwt.decode(session); const uid = decoded.user_id if (!uid) return JSONResponse.notAuthorized(); const user = await User.findOne({ uid }) if (!user) return JSONResponse.notAuthorized(); req.app.locals.currentUser = user; req.app.locals.uid = uid; next() } catch (err) { console.log(err); JSONResponse.notAuthorized(); } }Aquí están mis rutas principales:
app.use("/api/auth", AuthRoutes) app.use("/api/user", AuthMiddleware, UserRoutes) app.use("/api/date", AuthMiddleware, DateRoutes) app.use("/api/chat", AuthMiddleware, ChatRoutes)¿Cómo soluciono este problema? No estoy seguro de qué está causando este problema raro.
ACTUALIZAR:
https://stackoverflow.com/a/35111195/14786214
después de ver esta respuesta. Creo que el problema fue req.app.locals ya que app.locals almacena la variable durante todo el ciclo de vida de la aplicación, mientras que res.locals almacena solo para el ciclo de vida de la solicitud.