Как получить доступ к защищенному узлу аутентификации маршрута / JWT - PullRequest
0 голосов
/ 18 октября 2019

Я в отчаянии, застрял на этом в течение нескольких дней ... Я новичок в Node / JWT, и я не могу найти какое-либо руководство, которое соответствует моим потребностям, я был бы рад заплатить, если я решу этовопрос.

Я пытаюсь получить доступ к защищенному маршруту '/ users / me', который выглядит следующим образом:

Router

На GETЗапрашиваемое промежуточное программное обеспечение аутентификации отключается, и оно выглядит следующим образом:

const jwt = require('jsonwebtoken')
const User = require('../models/userModel')

const auth = async (req, res, next) => {
    try {
        const token = req.header('Authorization').replace('Bearer ', '')
        const decoded = jwt.verify(token, 'secretWasUsed')
        const user = await User.findOne({ _id: decoded._id, 'tokens.token': token })

        if (!user) throw new Error()

        req.token = token
        req.user = user
        next()
    } catch (error) {
        res.status(401).send({
            error: 'Please authenticate ' + error,
        })
    }
}

module.exports = auth

WebController.getMe возвращает res.json(req.token)

Код на внешнем интерфейсе

document.querySelector('#myProfile').addEventListener('click', () => {
    http.getAuth('/users/me')
})

GET AUTH is defined in the other class (its imported on the top)


getAuth(url) {
        fetch(url, {
            method: 'GET',
            headers: {
                'Authorization': window.localStorage.getItem('token')
            }
        }).then(response => {
            if (response.status === 200) {
                return response.json()
            } else {
                throw new Error('There was an error in Authentication!')
            }
        }).then(json => {
            return console.log(json)
        })
        .catch(err => console.log(err))
}

ЦЕЛЬ: Передать промежуточное программное обеспечение аутентификации и перенаправить в / users / me. РЕАЛЬНОСТЬ: Я не передаю промежуточное ПО аутентификации, но получаю токен. GITHUB: https://github.com/Elvis339/ActiveCollab-Superhero

Лучше всего, если вы загрузите проект, создайте пользователя через почтальона по этому URL http://localhost:3000/

{
    "name": "test",
    "email": "test@gmail.com",
    "password": "test"
}

Вход> Мой профиль (это где дерьмо случается)

...