Получение данных в угловом компоненте (страница профиля)

#javascript #node.js #angular #rest #jwt

#javascript #node.js #angular #остальное #jwt

Вопрос:

Я работаю над приложением MEAN Stack. Я выполнил аутентификацию и авторизацию с помощью jWt, и это работает как шарм. Проблема, с которой я сталкиваюсь, заключается в том, как получить пользовательские данные в компоненте страницы профиля. Я думаю о нескольких вариантах:

  • Сначала отправьте электронное письмо из компонента Login на панель мониторинга, а затем передайте его в Profile. С этого момента будет легко отправить запрос get, чтобы отправить пользователю электронное письмо.
  • Во-вторых, я не знаю, возможно ли это, но я подумываю об использовании jwt, который я возвращаю пользователю, чтобы получить его данные, поскольку я создал его с помощью предоставленной электронной почты в Login

Вот как я создал токен jwt:

 login: async (data, model) => {
    try {
        /** 
         * Fetch the admin from the Database
         */
        const adminData = await baseRepository.findOne({ email: data.email }, model);
        /** 
         * Check if an admin with that email exists
         */
        if (!adminData) {
            return (400, { message: "ADMIN NOT FOUND" })
        } else {
            /** 
             * Compare the input password with the hashed password in the database
             */
            const admin = { email: adminData.email }
            if (await bcrypt.compare(data.password, adminData.password)) {
                /** 
                 * Create a jwt Token and send it back to the client
                 */
                const accessToken = jwt.sign(admin, process.env.ACCESS_TOKEN_SECRET)
                return ({ status: 200, accessToken: accessToken })
            }
            return ({ status: 401, accessToken: null })
        }
    }

    catch (err) {
        throw err
    }
}
 

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

 login: async (req, res) => {

    try {
        console.log("yo")
        const { status, accessToken } = await authRepository.login(req.body, Admin)
        if (status == 400) {
            res.status(400).json({ message: "ADMIN NOT FOUND" })
        } else if (status == 401) {
            res.status(401).json({ message: "WRONG PASSWORD" })
        }
        res.status(200).json({ accessToken: accessToken })
    }
    catch (e) {
        res.status(400).send({ error: e })
    }

}
 

И это библиотеки, которые я использую:

 const bcrypt = require("bcrypt");
const jwt = require("jsonwebtoken");
 

Комментарии:

1. Можете ли вы включить сегменты кода, включая библиотеки jwt, которые вы используете? Обычно служба, содержащая данные профиля, возвращается при входе в систему. Затем такие компоненты, как панель мониторинга или профиль, берут его оттуда, не требуя параметров запроса. Я использую службы аутентификации auth0, которые основаны на JWT. Моя служба аутентификации использует их js SDK, который возвращает мне некоторую базовую информацию о профиле, включая электронную почту.

2. Сделано и сделано! Как вы можете видеть, я использовал пакет jsonwebtoken

Ответ №1:

Ответом службы входа в систему должна быть информация о профиле

Комментарии:

1. а затем передать возвращаемое значение компоненту профиля?

2. Вам нужно сохранить значение в локальном хранилище, а не в определенном компоненте