【发布时间】:2019-12-18 11:57:10
【问题描述】:
我在 AdoniJs 中创建了 REST API。在此,我使用 GET、POST、PUT 和 DELETE 方法为 CRUD 操作创建了 API 端点。我使用shieldjs 作为中间件来验证CSRF 令牌。我正在从 Postman 进行 API 调用。
首先,我调用 API 的 GET 方法,并正确获取了预期数据和 3 个 cookie 作为响应的一部分,其中一个是 XSRF-TOKEN。
但是,当我通过在请求标头中的 cookie 中将键 X-XSRF-TOKEN 设置为 XSRF-TOKEN 的值来调用 PUT、POST 和 DELETE 方法时,我收到错误 EBADCSRFTOKEN 作为 Postman 的响应。
shield.js文件中ShieldJS中CSRF的配置
csrf: {
enable: true,
methods: ['POST', 'PUT', 'DELETE'],
filterUris: [],
cookieOptions: {
httpOnly: false,
sameSite: true,
path: '/',
maxAge: 7200
}
}
handler.js 文件中的错误处理程序代码
async handle (error, {request, response }) {
if (error.code === 'EBADCSRFTOKEN') {
response.forbidden(error.code)
return
}
}
当我在 ShieldJs 中将 enable: false 的值更改为 csrf 时,它工作正常,但在我执行 enable: true 之后,我收到错误 EBADCSRFTOKEN。
我在发送xsrf 令牌时不应收到此错误代码。
【问题讨论】:
标签: adonis.js