#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. Вам нужно сохранить значение в локальном хранилище, а не в определенном компоненте