最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

在Adonis.js中,为什么refreshToken为null?

运维笔记admin16浏览0评论

在Adonis.js中,为什么refreshToken为null?

在Adonis.js中,为什么refreshToken为null?

我正在学习Adonisjs,并想在我的api rest中实现注销部分,但是由于无法在请求中请求注销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”中得到答复的令牌,但它返回无效的令牌:

{
  "error": "Invalid refresh token"
}

所以,我该如何解决?

我正在学习Adonisjs,并想在我的api rest中实现注销部分,但是由于无法在请求中请求注销refresh_token,所以我不能这样做,但是我不知道这在哪里...

回答如下:

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

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

发布评论

评论列表(0)

  1. 暂无评论