我正在使用devise令牌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
答案 0 :(得分: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生成令牌。因此,您可以deserialize using load。
我希望这会有所帮助!