@webe
frontend

Как правильно пробросить данные?

Таблица в бд:
id,login,password,token

После удачной авторизации мы генерируем новый токен и возвращаем его на клиент
Далее мы снова выполняем запрос к API get_links, но уже с токеном.
Этот токен мы проверяем через isAuthenticated, если токен настоящий, то продолжаем работу, если токена не существует в бд, то вываливаем ошибку ERROR_AUTH_TOKEN

Вопрос вот в чем, как в links.getUserLinksByID(db, 777)
вместе 777 подставить ID пользователя , который мы получили в мидлваре isAuthenticated ?
Когда я исопльзовал сессии - было все просто, но без сессий не знаю как сделать.
Подскажите плиз.


app.post("/api/v1/auth", async (req, res) => {
  const { email, password } = req.body;
  const user = await auth.loginUser(db, email, password);
  if (user) {
    const token  =  await auth.updateToken(db, user.id); 
    res.json({ message: "SECCESS", data: { token: token } });
  } else  {
    res.json({ message: "ERROR_AUTH", data: {}});
  }
});


function isAuthenticated(req, res, next) {
  const { token } = req.body;
  console.log('isAuthenticated token',token)
   const user =  auth.checkToken(); 
   // Проверем  есть ли пользователь с таким токеном, 
   // Если есть, то в user  сохраняем объект с пользователем.
   //  777,admin,admin,706669f29acdc5a14d2a2a1f24e45bd898db6898
  if (user) {
    return next();
  } else {
    res.json({ message: "ERROR_AUTH_TOKEN", data: {}});
  }
}


app.post("/api/v1/links/get_links", isAuthenticated, async (req, res) => {
 //777 - это ID пользователя
  const userLinks = await links.getUserLinksByID(db, 777);
  res.json({ message: "USER_LINKS", data: { userLinks } });
});
  • Вопрос задан
  • 59 просмотров
Решения вопроса 1
Negezor
@Negezor
Senior Shaurma Developer
Так?
function isAuthenticated(req, res, next) {
  const { token } = req.body;
  console.log('isAuthenticated token',token)
   const user =  auth.checkToken(); 
   // Проверем  есть ли пользователь с таким токеном, 
   // Если есть, то в user  сохраняем объект с пользователем.
   //  777,admin,admin,706669f29acdc5a14d2a2a1f24e45bd898db6898
  if (user) {
    req.user = user;
    return next();
  } else {
    res.json({ message: "ERROR_AUTH_TOKEN", data: {}});
  }
}

app.post("/api/v1/links/get_links", isAuthenticated, async (req, res) => {
 //777 - это ID пользователя
  const userLinks = await links.getUserLinksByID(db, req.user.id);
  res.json({ message: "USER_LINKS", data: { userLinks } });
});
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы