首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在firebase中分离用户角色?

如何在firebase中分离用户角色?
EN

Stack Overflow用户
提问于 2016-07-30 03:54:59
回答 2查看 6.2K关注 0票数 6

如何在firebase android应用中添加用户角色认证?据我所知,firebase只有电子邮件和密码身份验证。我想开发一个具有2+用户角色的安卓应用程序。例如,如果一个普通会员登录,他将进入normal_memberActivity,如果他是高级会员,他将进入premium_memberActivity。如何在firebase中添加角色?找不到和我类似的问题。

通常,我会这样做:

代码语言:javascript
复制
String role = intent.getStringExtra("role");

if (role.equals("admin")){
FragmentManager fm = getSupportFragmentManager();
fm.beginTransaction().replace(R.id.content_frame, new AdminHomeFragment()).commit();
}else{
FragmentManager fm = getSupportFragmentManager();
fm.beginTransaction().replace(R.id.content_frame, new NormalFragment()).commit();
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-07-30 04:27:38

您可以在存储用户的uid及其角色的firebase数据库中添加角色节点。

代码语言:javascript
复制
"roles" : {
    "uid1" : "normal",
    "uid2" : "premium",
    "uid3" : "normal",
}

然后,您可以在用户成功登录后获取角色值

代码语言:javascript
复制
ref.child("roles").child(firebaseUser.getUid()).addListenerForSingleValueEvent(new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        String role = dataSnapshot.getValue(String.class);
        // check role and replace fragment
    }
    @Override
    public void onCancelled(DatabaseError databaseError) {}
});
票数 8
EN

Stack Overflow用户

发布于 2017-09-28 05:24:41

Firebase刚刚启动了对任何用户的基于角色的访问支持,通过ID标记上的自定义用户声明:https://firebase.google.com/docs/auth/admin/custom-claims

您将定义高级访问规则:

代码语言:javascript
复制
{
  "rules": {
    "premiumContent": {
      ".read": "auth.token.role === 'premium'",
      ".write": "auth.token.role === 'premium'",
    }
  }
}

使用Admin SDK设置用户角色:

代码语言:javascript
复制
// Set admin privilege on the user corresponding to uid.
admin.auth().setCustomUserClaims(uid, {role: 'premium'}).then(() => {
  // The new custom claims will propagate to the user's ID token the
  // next time a new one is issued.
});

这将传播到相应用户的ID令牌声明。

要从客户端上的令牌解析它,您需要对ID令牌的有效负载进行base64解码。

您可以根据需要对用户进行升级/降级。它们还提供了一种编程方法来列出所有用户,如果您有反复出现的脚本来更改用户的访问级别:https://firebase.google.com/docs/auth/admin/manage-users#list_all_users

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38666560

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档