【问题标题】:adonis.js "E_INVALID_METHOD: logout method is not implemented by jwt schemeadonis.js "E_INVALID_METHOD: jwt 方案没有实现注销方法
【发布时间】:2018-09-11 22:14:37
【问题描述】:
我正在使用:
- 阿多尼斯 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
这里可能出了什么问题?
【问题讨论】:
标签:
authentication
jwt
adonis.js
【解决方案1】:
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'})
}