【发布时间】:2019-10-14 01:14:07
【问题描述】:
我正在学习 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"
}
那么,我该如何解决呢?
【问题讨论】: