Как мне найти идентификатор текущего пользователя, который "залогинен" с помощью jwt?Я пытаюсь сделать запрос GET и фильтровать по конкретному идентификатору - PullRequest
0 голосов
/ 24 февраля 2019

Это конечная точка в моем API, к которой я пытаюсь получить доступ

router.get('/:id', [jsonParser, jwtAuth], (req, res) => {
return Teams.find().sort({creator: req.params.id})
    .then(teams => res.status(200).json(teams))
    .catch(err => res.status(500).json({message: 'Internal server error'}));
});

Выборка будет выглядеть примерно так?

function viewProfile() {
const base = '/api/teams/';
const id = idFromJwt;
const url = base + id;

return fetch(url)
.then(res => res.json())
.then(response => {
//takes response and modifies DOM
    populateProfile(response);
})
.catch(err => console.log(err));
}

1 Ответ

0 голосов
/ 24 февраля 2019

Прежде всего, при условии, что вы используете ExpressJS Я предлагаю использовать express-jwt промежуточное программное обеспечение для обработки аутентификации запросов и выдачи новых токенов.

Что нужно иметь впомните, что вам нужно включить userId, когда вы аутентифицируете пользователя в полезной нагрузке JWT, чтобы потом иметь возможность извлечь его из полезной нагрузки.

Когда пользователь аутентифицирован, вы должны сохранитьтокен в состоянии вашей заявки или в localStorage или sessionStorage.

Если вы хотите декодировать токен на внешней стороне и затем отправить его в API, вы можете использовать простой модуль под названием jwt-decode, чтобы добиться этого:

const jwtDecode = require("jwt-decode");
const token = window.localStorage.getItem("token"); // eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWQiOiIxMjM0NTY3ODkiLCJpYXQiOjE1MTYyMzkwMjJ9.gHqSxzWpdOUL1nRAqUJg2CtjsEZZi8FLikD41i639zY
const tokenPayload = jwtDecode(token).id; // "123456789"

Имейте в виду, что в случае, если вы решили использовать express-jwt, вам также необходимо отправить токен в заголовках запроса как authorization для аутентификации.Надеюсь, поможет.:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...