node.js - 在Adonis.js中为什么refreshToken为空?

标签 node.js adonis.js

我正在学习Adonisjs,想在我的api休息中实现注销部分,但我不能,因为每当我注销时,请求中都会请求refresh_token,但我不知道这个refresh_token来自哪里。我注意到当我登录时,我得到一个“requestToken”参数,但它无论如何都是空的

当我登录时,它会起作用并返回类似于我的内容:

   {
      "type": "bearer",
      "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1aWQiOjEsImlhdCI6MTU3MTAxNTAwMH0.xXX6oDvdvdz59UJ2fstrFmOJEGP8luwKPtTeVF-Y224",
      "refreshToken": null
    }

代码如下:

async login ({ request, auth }) { 
    const { email, password } = request.all()

    const token = await auth.attempt(email, password)

    return token
}

async logout({ request, response}) {
    const rules = {
      refresh_token: 'required'
    };

    const { refresh_token } = request.only(['refresh_token']);

    const validation = await validate({ refresh_token }, rules);

    const decrypted = Encryption.decrypt(refresh_token);

    if (!validation.fails()) {
      try {
        const refreshToken = await Token.findBy('token', decrypted);
        if (refreshToken) {
          refreshToken.delete();
          response.status(200).send({ status: 'ok' });
        } else {
          response.status(401).send({ error: 'Invalid refresh token' });
        }
      } catch (err) {
        response.status(401).send({ error: err.toString()});
      }
    } else {
      response.status(401).send(validation.messages());
    }

  } 
}

我尝试查看一些 git api 甚至 adonisjs 身份验证文档,但无济于事。

我还尝试添加请求“request_token”中应答的 token ,但它返回无效 token :

{
  "error": "Invalid refresh token"
}

那么,我该如何解决这个问题呢?

最佳答案

根据 adonis 文档,遵循此 api 调用 - 它在登录期间生成刷新 token - 身份验证流程

指示 JWT 身份验证器也生成刷新 token :

await auth
  .withRefreshToken()
  .attempt(uid, password)

引用号:https://adonisjs.com/docs/4.1/authentication

关于node.js - 在Adonis.js中为什么refreshToken为空?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58368997/

相关文章:

html - 网站无法在诺基亚 Lumia 中运行

node.js - OpenMCT 的 "npm install"给出很多错误

angularjs - 如何更改 Node.js 接收 POST 数据的大小限制

javascript - 正则表达式在 Adonis Js 中无法正常工作

typescript - 阿多尼斯 5 "make:migration command not found"有什么想法吗?

javascript - Backbone localStorage 没有使用良好的同步方法

ios - 我如何使用 node.js + Passport 通过 IOS 验证 facebook 登录

javascript - 如何在 Adonisjs 中格式化日期?

javascript - ':' 冒号在 JavaScript 的导入中有什么作用?