【发布时间】:2020-03-04 12:34:31
【问题描述】:
在我的云功能中,我需要创建一个自定义令牌并插入一些自定义声明。我是这样做的:
let additionalClaims = {
'https://hasura.io/jwt/claims': {
'x-hasura-default-role': 'admin',
'x-hasura-allowed-roles': ['user', 'admin'],
}
}
admin.auth().createCustomToken(userId,additionalClaims).then(function (customToken) {
console.log(customToken);
response.end(JSON.stringify({
token: customToken
}))
})
.catch(function (error) {
console.log('Error creating custom token:', error);
});
声明被添加,但它们被放置在一个“声明”节点中,如下所示:
{
"aud":
"https://identitytoolkit.googleapis.com/google.identity.identitytoolkit.v1.IdentityToolkit",
"iat": 1573160781,
"exp": 1573164381,
"iss": "postgrest-b4c8c@appspot.gserviceaccount.com",
"sub": "postgrest-b4c8c@appspot.gserviceaccount.com",
"uid": "mikeuserid",
"claims": {
'https://hasura.io/jwt/claims': {
'x-hasura-default-role': 'admin',
'x-hasura-allowed-roles': ['user', 'admin'],
}
}
}
}
但是,我调用的 API 期望它们位于根目录中,如下所示:
{
"aud":
"https://identitytoolkit.googleapis.com/google.identity.identitytoolkit.v1.IdentityToolkit",
"iat": 1573160781,
"exp": 1573164381,
"iss": "postgrest-b4c8c@appspot.gserviceaccount.com",
"sub": "postgrest-b4c8c@appspot.gserviceaccount.com",
"uid": "mikeuserid",
"https://hasura.io/jwt/claims": {
"x-hasura-default-role": "admin",
"x-hasura-allowed-roles": ["user", "admin"],
}
}
}
如何添加声明以便将它们添加到根目录,而不是在“声明”下??
仅供参考,如果我有现有用户,请使用此语法 admin.auth().setCustomUserClaims(customToken, additionalClaims),
它正确地将它们添加到根目录。
【问题讨论】:
标签: node.js firebase-authentication firebase-admin