adonis.js“ E_INVALID_METHOD:jwt方案未实现注销方法

时间:2018-09-11 22:14:37

标签: authentication jwt adonis.js

我正在使用:

  • adonis 4.1.0,
  • jwt方案,mongodb

注册和登录正常,在我的authController.js中注销失败:

async logout ({ request, response, auth }) {
    await auth.logout()//falls here
    return response.send('success')
  }
  

代码:“ E_INVALID_METHOD”

     

消息:“ E_INVALID_METHOD:jwt方案未实现注销方法↵>更多

     

详细信息:https://err.sh/adonisjs/errors/E_INVALID_METHOD

     

状态:500

这里可能出什么问题了?

1 个答案:

答案 0 :(得分:0)

  

auth.logout()仅适用于基于会话的身份验证。

对于JWT,您需要撤消用户的RefreshToken **

  

**对于jwt方案,仅刷新令牌被吊销,因为实际令牌   永远不会保存在数据库中

这是Adonisjs 4.1的注销方法

 async logout({ request, response, auth }) { 

        const refreshToken = request.input('refreshToken');
        if(!refreshToken){

            // You can throw any exception you want here
            throw BadRequestException.invoke(`Refresh Token missing`);
        }

        await auth
          .authenticator('jwt')
          .revokeTokens([refreshToken], true)

      return response.send({status : 200, "message" : 'success'})
  }