для повышения безопасности я использую аутентификацию на основе JWT.
он работает в среде разработки.
В производственной среде я использую HTTPS-сервер Apache, что я использую, что я использую, что в этой среде, что я использую, в этой среде. JWT не работает постоянно. Иногда приложение предлагает сообщение «Срок действия jwt» на сервере, даже если пользователь вошел в систему.
Код: Выделить всё
let sendResponse = async (res, action, param, jwt, usrObj, headers = {}) => {
try {
//res.send(await action(param));
const sanitized = { ...usrObj };
delete sanitized.iat;
delete sanitized.exp;
res.setHeader('x-access-token', jwt.sign(sanitized));
let result = await action(param);
if (Object.keys(headers).length === 0) {
let returnObj = {
result
}
res.send(returnObj);
} else {
for (const [key, value] of Object.entries(headers)) {
res.setHeader(key, value);
}
res.send(result);
}
} catch (error) {
console.log(error.message);
res.status(400).send(error.message);
}
< /code>
} < /p>
, где «действие» - это функция, которая получает данные из моей базы данных.
Приложение имеет функцию генерации файлов Excel, функция SendResponse должна поддержать загрузку файла. < /p>
Вот мой класс JWT: < /p>
< /p> Вот мой класс JWT: < /p>
< /p> .import jwt from "jsonwebtoken";
export default class JWT {
#accessTokenSecret;
#expirePeriod;
constructor(secret, expirePeriod) {
this.#accessTokenSecret = secret;
this.#expirePeriod = expirePeriod;
}
isValid = async token => {
try {
return jwt.verify(token, this.#accessTokenSecret);
} catch (error) {
throw new Error(`${error.message}`);
}
}
sign = (dataObj) => {
return jwt.sign(
dataObj,
this.#accessTokenSecret,
{
expiresIn: this.#expirePeriod,
algorithm: "HS256"
});
}
}
Итак, что происходит?
Подробнее здесь: https://stackoverflow.com/questions/796 ... d-randomly