【发布时间】:2021-03-09 14:01:55
【问题描述】:
用户认证返回token,但没有保存在数据库中
AuthController:
'use strict'
const User = use("App/Models/User");
class AuthController {
async registrar({ request }) {
const data = request.only(["username", "email", "password"]);
const user = await User.create(data);
return user;
}
async autenticar({ request, auth }) {
const { email, password } = request.all();
const retorno = {};
let token;
if (token = await auth.attempt(email, password)) {
const user = await User.findBy('email', email)
retorno.token = token.token;
retorno.user = user.username;
retorno.id = user.id;
} else {
retorno.data = "E-mail ou senha Incorretos";
}
return retorno;
}
}
module.exports = AuthController
我的请求
POST http://localhost:3333/autenticar
{
"email":"c@gmail.com",
"password": "123456"
}
我的回应
{
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1aWQiOjEsImlhdCI6MTYxNTI5Njk4MH0.O0X4gGIEtMiZfEH3VxWbffsCZQDUhgEv0CymA0dB6z8",
"user": "gui",
"id": 1
}
请求后我的令牌表 0 tokens
我在另一个网站上发现了同样的问题,但没有找到有用的答案。
【问题讨论】:
-
如果token是JWT,正常(JWT不存入数据库,只存刷新token)
-
是JWT,但是数据库里什么都没有保存,是不是应该保存一些东西?
-
不。 JWT 是“不”(您可以这样做,但它没用)保存在 db 上,因为令牌已签名。令牌仅存储在客户端。请阅读此文档以了解 JWT 的工作原理:jwt.io/introduction。只有刷新令牌保存在数据库中。
-
现在我明白了,谢谢兄弟
-
我想我应该删除这个问题,对吧?
标签: authentication jwt adonis.js