@tnx

Как отобразить данные текущего пользователя?

Я хочу отобразить данные текущего пользователя но когда я пытаюсь это сделать id выдает что равен null.
Вот запрос который отображается в терминале:
Executing (default): SELECT "id", "name", "username", "roles", "password", "photoSrc", "createdAt", "updatedAt" FROM "users" AS "users" WHERE "users"."id" = NULL LIMIT 1;
GET /api/auth/profile 200 36.877 ms - 4

controller:
const db = require('../config/db.config.js')
const User = db.user
const errorHandler = require('../utils/errorHandler')

module.exports.getProfile = async function(req, res) {
    try {
        const user = await User.findOne({
            where: {
                id: req.body.id
            }
        })
        res.status(200).json(user)
    } catch(e) {
        errorHandler(res, e)
    }
}


route:

const express = require('express')
const router = express.Router()
const controller = require('../controllers/auth')
const passport = require('passport')

router.post('/login', controller.login)
router.get('/profile', passport.authenticate('jwt', {session: false}), controller.getProfile)


module.exports = router
  • Вопрос задан
  • 79 просмотров
Пригласить эксперта
Ответы на вопрос 4
shmatuan
@shmatuan
WHERE "users"."id" = NULL - это о том, что в req.body.id находится NULL
Ответ написан
Krasnodar_etc
@Krasnodar_etc
little front
В самом запросе id вообще передаётся?
Ответ написан
@vadimtheslayer
Вы ведь явно в запросе указываете id = NULL
WHERE "users"."id" = NULL LIMIT 1;
Просто укажите нужный...
Ответ написан
@vorotech
Если вы не хотите для текущего пользователя передавать его идентификатор (и не создавать потенциальную уязвимость для получения данных произвольного пользователя), нужно использовать сессию. Идентификатор сессии после успешной аутентификации возвращается в качестве кукиз и автоматически передается с каждым запросом. Таким образом сервер находит пользователя и дальше вы используете id полученный из сессии.

Почитайте больше в документации express.js как настроить сессию и ее хранение на стороне сервера между пользовательскими запросами.
Ответ написан
Ваш ответ на вопрос

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

Войти через TM ID
Похожие вопросы
от 200 000 до 300 000 руб.
CS Money Санкт-Петербург
от 120 000 до 150 000 руб.
Lensoft.pro Санкт-Петербург
от 100 000 до 140 000 руб.