我已经在AdoniJs中创建了REST API。在本文中,我使用GET,POST,PUT和DELETE方法为CRUD操作创建了API端点。我使用shieldjs
作为中间件来验证CSRF
令牌。我正在从邮递员进行API调用。
首先,我正在调用API的GET方法,并正确获取了预期的数据,并获得了3个cookie作为响应的一部分,其中一个是XSRF-TOKEN
。
但是,当我通过将请求头中的cookie中的键X-XSRF-TOKEN
设置为XSRF-TOKEN
的值来调用PUT,POST和DELETE方法时,我收到了错误EBADCSRFTOKEN
作为响应邮差。
在CSRF
文件中的ShieldJS中配置shield.js
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
令牌时,我不应收到此错误代码。
答案 0 :(得分:4)
csrf: {
enable: true,
methods: ['POST', 'PUT', 'DELETE'],
filterUris: ['/firstroute','*',],
cookieOptions: {
httpOnly: false,
sameSite: true,
path: '/',
maxAge: 7200
}
}
有关csrf的更多信息,请访问此网站adonisjs
adonis new projectname --api-only
有关更多信息,请遵循link如何创建API项目。