Bonjour,

Je suis en train de faire une api sur node js qui fonctionnait très bien mais à la suite de l'ajout du package "aes256" j'ai une partie qui ne fonctionne plus sans y avoir touchée. Je génère un token grâce à "jsonwebtoken", tout fonctionne mais c'est lors de la réception que cela se complique, en effet le décryptage du token fonctionne mais lorsque je souhaite transférer le résultat sur une autre page grâce à "ctx.request.jwtPayloadTo" qui est ensuite récupéré sur une autre Dans le fichier "authenticated.js"

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
 
const jwt = require('jsonwebtoken'); // user token
 
const secret = process.env.JWT_SECRET || 'secret'; // définit le Secret
 
module.exports = async (ctx, next) => {
  if (!ctx.headers.authorization) ctx.throw(401, "{\"result\" : 401, \"token\" : \"note token\"}"); // verifie si on a mis un token
 
  const token = ctx.headers.authorization.split(' ')[1]; // split le token pour enlever le "Bearer " qui est devant le token
  try {
    ctx.request.jwtPayloadTo = jwt.verify(token, secret); // on verifie la validité tu token
  } catch (err) {
    ctx.throw(403, "{\"result\" : fail token}"); // token non valide
  }
 
  console.log(ctx.request.jwtPayloadTo.sub);
  await next(); // suivant
};
Le ctx.request.jwtPayloadTo.sub est bien égale à la valeur que j'ai mise

Mais arrivé dans le prochain fichier "Pot.js"

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
module.exports.all = async function (ctx) {
    const {uuid} = ctx.query
 
    if(!uuid)    ctx.throw(422, 'uuid requi');
 
    try {
      const id = ctx.request.jwtPayload.sub
    } catch (err) {
      ctx.throw(503, err);
    }
 
    ctx.throw(200, id);
}
À ce moment le try catch me renvoi "Cannot read property 'sub' of undefined"

Paquets utilisés

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
 
"@koa/cors": "^3.1.0",
"aes256": "^1.1.0",
"jsonwebtoken": "^8.5.1",
"knex": "^0.19.5",
"koa": "^2.13.4",
"koa-body": "^4.2.0",
"koa-compress": "^5.1.0",
"koa-router": "^7.4.0",
"koa-static": "^5.0.0",
"mysql": "^2.18.1",
"path": "^0.12.7"
"main.js"
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 
const app = new Koa()
const router = new Router()
 
app.use(cors());
router.get('/pot', comp, koaBody(), authenticated, pot.all)