@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
  • Вопрос задан
  • 95 просмотров
Пригласить эксперта
Ответы на вопрос 3
Krasnodar_etc
@Krasnodar_etc
little front
В самом запросе id вообще передаётся?
Ответ написан
@vadimtheslayer
Вы ведь явно в запросе указываете id = NULL
WHERE "users"."id" = NULL LIMIT 1;
Просто укажите нужный...
Ответ написан
@vorotech
Если вы не хотите для текущего пользователя передавать его идентификатор (и не создавать потенциальную уязвимость для получения данных произвольного пользователя), нужно использовать сессию. Идентификатор сессии после успешной аутентификации возвращается в качестве кукиз и автоматически передается с каждым запросом. Таким образом сервер находит пользователя и дальше вы используете id полученный из сессии.

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

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

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