PUT,POST,DELETE操作中的Postman中的AdonisJS错误代码“ EBADCSRFTOKEN”

时间:2019-08-11 17:28:11

标签: adonis.js

我已经在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令牌时,我不应收到此错误代码。

1 个答案:

答案 0 :(得分:4)

filterUris 放置在您的路线路径中

csrf: {
    enable: true,
    methods: ['POST', 'PUT', 'DELETE'],
    filterUris: ['/firstroute','*',],
    cookieOptions: {
      httpOnly: false,
      sameSite: true,
      path: '/',
      maxAge: 7200
    }
  }

有关csrf的更多信息,请访问此网站adonisjs


第二种方法是

  • 创建REST API项目。创建API时不需要视图。不获取csrftoken时会生成此错误。 因此,您可以尝试为不包含这种视图的唯一API创建一个项目 adonis new projectname --api-only

有关更多信息,请遵循link如何创建API项目。