Вы можете получить доступ к претензиям пользователя , используя FirebaseUser.getIdToken
.
IdTokenResult
, возвращаемое из Future
, который возвращаетсяметод содержит полезную информацию о токене аутентификации, такую как время аутентификации, время истечения токена, провайдер входа и т. д., но он также содержит претензии пользователя и вместе с этим также ваши настраиваемые утверждения .
Future<Map<dynamic, dynamic>> get currentUserClaims async {
final user = await FirebaseAuth.instance.currentUser();
// If refresh is set to true, a refresh of the id token is forced.
final idToken = await user.getIdToken(refresh: true);
return idToken.claims;
}
Если вы позвоните получателю сейчас (await currentUserClaims
), он вернет Map<dynamic, dynamic>
со всеми утверждениями пользователя, а не только с настраиваемыми утверждениями. Это будет выглядеть примерно так (в этом случае пользователь использовал провайдер входа в телефон):
{
phone_number: <phone number>,
firebase: {
identities: {
phone: [<phone number>]
},
sign_in_provider: phone
},
user_id: <user id>,
aud: <project id>,
exp: <expiration time in milliseconds since epoch>,
iat: <issued at time in milliseconds since epoch>,
iss: https://securetoken.google.com/<project id>,
sub: <user id>,
auth_time: <authentication time in milliseconds since epoch>,
admin: true, # This is your custom claim!
}
Вы можете увидеть пользовательскую претензию в конце. Это означает, что вы можете проверить это так:
final isAdmin = (await currentUserClaims)['admin'] == true;