J'ai créé une API REST dans AdoniJs. Dans cette API, j'ai créé des points de terminaison pour les opérations CRUD avec les méthodes GET, POST, PUT et DELETE. J'utilise shieldjs
en tant qu'intergiciel pour vérifier CSRF
jeton. J'effectue des appels d'API à partir de Postman.
Tout d'abord, j'appelle la méthode GET de l'API et j'obtiens correctement les données attendues et 3 cookies dans la réponse, dont l'un est le suivant XSRF-TOKEN
.
Mais quand j'appelle les méthodes PUT, POST et DELETE en définissant la clé X-XSRF-TOKEN
à la valeur de XSRF-TOKEN
à partir du cookie dans l'en-tête de la demande, j'obtiens une erreur EBADCSRFTOKEN
comme réponse dans Postman.
Configuration de CSRF
dans ShieldJS dans shield.js
fichier
csrf: {
enable: true,
methods: ['POST', 'PUT', 'DELETE'],
filterUris: [],
cookieOptions: {
httpOnly: false,
sameSite: true,
path: '/',
maxAge: 7200
}
}
Code du gestionnaire d'erreurs dans handler.js
fichier
async handle (error, {request, response }) {
if (error.code === 'EBADCSRFTOKEN') {
response.forbidden(error.code)
return
}
}
Lorsque je change la valeur de enable: false
para csrf
dans ShieldJs alors ça marche bien mais après avoir fait enable: true
Je reçois l'erreur EBADCSRFTOKEN
.
Je ne devrais pas avoir ce code d'erreur car j'envoie xsrf
jeton.