cre*_*not 2 dart firebase firebase-authentication flutter
我正在尝试根据此文档文章访问我为用户设置的自定义声明。
我在 Firebase Authentication Flutter 插件customClaims的FirebaseUser类中找不到成员。
如何在 Flutter 中访问 Firebase 身份验证自定义声明?
注意:我有以下自定义声明:
"customClaims": {
"admin": true
}
Run Code Online (Sandbox Code Playgroud)
cre*_*not 12
您可以访问用户的要求使用FirebaseUser.getIdTokenResult。
在IdTokenResult从返回Future由该方法返回包含有关认证令牌的有用信息,例如认证,令牌,所述登入提供商的过期时间等的时间,但它也包含了用户的权利要求书,并与也您的自定义声明。
Future<Map<dynamic, dynamic>> get currentUserClaims async {
final user = FirebaseAuth.instance.currentUser;
// If refresh is set to true, a refresh of the id token is forced.
final idTokenResult = await user.getIdTokenResult(true);
return idTokenResult.claims;
}
Run Code Online (Sandbox Code Playgroud)
如果您现在调用 getter ( await currentUserClaims),它将返回Map<dynamic, dynamic>包含所有用户声明的 a,而不仅仅是自定义声明。这看起来像这样(在这种情况下,用户使用电话登录提供程序):
{
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!
}
Run Code Online (Sandbox Code Playgroud)
您可以在最后看到自定义声明。这意味着您可以像这样检查它:
final isAdmin = (await currentUserClaims)['admin'] == true;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2124 次 |
| 最近记录: |