在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身份验证器生成刷新令牌: