Я буду честен, я полностью потерян на этом. Этот проект работал отлично, и я запускаю его с моего последнего работающего GitHub pu sh. Вот что случилось. Я потерял весь свой бэкэнд. Не знаю как, не уверен, что случилось. Поэтому, когда я вытащил из GitHub, у меня не было резервной копии моего секретного ключа JWT. Я получил "Invalid Token Error" (или что-то в этом роде). Я поместил весь этот проект на новый сервер / базу данных, и теперь я получаю следующую ошибку:
JsonWebTokenError: jwt malformed
at Object.module.exports [as verify] (C:\Users\glove\workspace\CharityApp\backend\node_modules\jsonwebtoken\verify.js:49:17)
at C:\Users\glove\workspace\CharityApp\backend\src\index.js:15:30
at Layer.handle [as handle_request] (C:\Users\glove\workspace\CharityApp\backend\node_modules\express\lib\router\layer.js:95:5)
at trim_prefix (C:\Users\glove\workspace\CharityApp\backend\node_modules\express\lib\router\index.js:317:13)
at C:\Users\glove\workspace\CharityApp\backend\node_modules\express\lib\router\index.js:284:7
at Function.process_params (C:\Users\glove\workspace\CharityApp\backend\node_modules\express\lib\router\index.js:335:12)
at next (C:\Users\glove\workspace\CharityApp\backend\node_modules\express\lib\router\index.js:275:10)
at cookieParser (C:\Users\glove\workspace\CharityApp\backend\node_modules\cookie-parser\index.js:71:5)
at Layer.handle [as handle_request] (C:\Users\glove\workspace\CharityApp\backend\node_modules\express\lib\router\layer.js:95:5)
at trim_prefix (C:\Users\glove\workspace\CharityApp\backend\node_modules\express\lib\router\index.js:317:13)
И блок кода, на который он ссылается в индексе. js:
const jwt = require('jsonwebtoken');
const cookieParser = require('cookie-parser');
require('dotenv').config({path: 'variables.env'});
const createServer = require('./createServer');
const db = require('./db');
const server = createServer();
server.express.use(cookieParser());
// decode jwt to get user id on each request
server.express.use((req, res, next) => {
const {token} = req.cookies;
if(token) {
const {userId} = jwt.verify(token, process.env.APP_SECRET);
// put userid onto request for access
req.userId = userId;
}
next();
});
И код знака, который используется несколько раз, с разрешением GraphQL при входе в систему.
const token = jwt.sign({userId: user.id}, process.env.APP_SECRET);
// set cookie with token
ctx.response.cookie("token", token, {
httpOnly: true,
maxAge
});
Секрет приложения просто извлекается из файла .env, а maxAge - просто простое const для 1-летнего повара ie.
Это был в основном законченный проект. : / Если кто-то может помочь мне в этом, я был бы очень признателен.