1

我正在使用 devise token auth gem 和活动模型序列化程序进行身份验证,它会发送类似的响应

{

  "status": "Success",

  "message": "User Created Successfully",

  "data": {

    "id": 9,

    "tokens": {

      "cUZCQrKCPQCijIjCWZI4mA": {

        "token": "$2a$10$9/ZKX7KmH4sLLdp19R331.E9BLInpnXCkJCX0xffJSHpTsu0/X.UK",

        "expiry": 1554720926

      }

    }

  }

}

但我主要是想得到类似的东西:-

{

  "status": "Success",

  "message": "User Created Successfully",

  "data": {

    "id": 9,

    "token": "$2a$10$9/ZKX7KmH4sLLdp19R331.E9BLInpnXCkJCX0xffJSHpTsu0/X.UK"

  }

}

我尝试使用 JSON Parse ,尝试获取最后一个令牌,但由于名称未知,因为它是随机生成的,所以我无法这样做。我怎样才能实现这一目标?

编辑:- 用户序列化器:-

class UserSerializer < ActiveModel::Serializer
  attributes :id, :tokens
end

4

1 回答 1

0

感谢您发布您的代码。你能试试这个吗?

class UserSerializer < ActiveModel::Serializer
  attributes :id, :token

  def token
    tokens = DeviseTokenAuth::TokensSerialization.load(object.tokens) # This gives you a hash
    tokens['YOURCLIENTID']['token']
  end
end

更新

您需要 clientid,它是散列的关键。此外,gem 使用 JSON.generate 生成令牌。所以你可以使用 load 反序列化

我希望这有帮助!

于 2019-03-26T06:09:29.397 回答