JWT 令牌未保存在数据库中

JWT token not saved on database

用户的身份验证returns令牌,但未保存在数据库中

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
}

request and response auth

我的代币table请求后 0 tokens

我在另一个网站上发现了同样的问题,但我找不到有帮助的答案。

AdonisJS 不存储 JWT token in the db. Only refresh token 存储。


Why JWT token are not stored?

^ JWT 没有保存在数据库中,因为它没有用。所有 JWT 令牌都经过签名,因此服务器可以轻松检查令牌是否有效。有用的答案

JWT 令牌不像不透明令牌那样工作。不透明令牌保存在数据库中,后端检查令牌是否存在,然后授予访问权限。

有用link:https://medium.com/@piyumimdasanayaka/json-web-token-jwt-vs-opaque-token-984791a3e715


了解 JSON 网络令牌: