GVKun编程网logo

即使对经过身份验证的用户使用最简单的规则,Firebase 实时数据库权限也被拒绝

17

本文将分享即使对经过身份验证的用户使用最简单的规则,Firebase实时数据库权限也被拒绝的详细内容,此外,我们还将为大家带来关于android–Firebase数据库权限被拒绝,读/写权限设置为tr

本文将分享即使对经过身份验证的用户使用最简单的规则,Firebase 实时数据库权限也被拒绝的详细内容,此外,我们还将为大家带来关于android – Firebase数据库权限被拒绝,读/写权限设置为true、android – 如何在Firebase中经过身份验证的用户和数据库之间进行链接?、ASP.NET Core 获得部分经过身份验证的用户(即正确的用户名 + 密码,但还不是 2FA)、asp.net-mvc – 仅为未经过身份验证的用户缓存内容的相关知识,希望对你有所帮助。

本文目录一览:

即使对经过身份验证的用户使用最简单的规则,Firebase 实时数据库权限也被拒绝

即使对经过身份验证的用户使用最简单的规则,Firebase 实时数据库权限也被拒绝

如何解决即使对经过身份验证的用户使用最简单的规则,Firebase 实时数据库权限也被拒绝?

首先,请原谅我不是开发人员,我肯定会在尝试解释我的问题时犯错误。

我有一个使用 Kodular 制作的应用,可与 Firebase 身份验证和实时数据库配合使用。当规则是这些时,它工作得很好:

{
  "rules": {
    ".read" : "auth != true",".write" : "auth != true"
  }
}

或者这些:

{
  "rules": {
    ".read": "true",".write": "true"
  }
}

但是如果我尝试将它们更改为仅允许经过身份验证的用户,即使是最简单的方法,也会导致权限被拒绝的消息。

    {
      "rules": { 
          "$userUID": {
              ".read": "auth.uid != null && auth.uid == $userUID",".write": "auth.uid != null && auth.uid == $userUID"           
    }
}

我已经在 kodular 社区询问过,但没有人能回答这个问题。 我认为这不是语法问题,因为我从几个帮助论坛和 Firebase 文档中复制了规则,但从未奏效,总是出现同样的问题。

任何解决问题的线索都会受到赞赏。 提前致谢。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

android – Firebase数据库权限被拒绝,读/写权限设置为true

android – Firebase数据库权限被拒绝,读/写权限设置为true

我在简单的Android应用程序中写入Firebase数据库时遇到问题.我已将数据库规则设置为公开:

{
  "rules": {
    ".read": true,
    ".write": true
  }
}

创建了一个简单的类消息:

import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;

public class Message {
    FirebaseDatabase database = FirebaseDatabase.getInstance();
    DatabaseReference dbRef = database.getReference();
    public String sender;
    public String message;

    public Message(){}

    public Message(String sender, String message) {
        this.sender = sender;
        this.message = message;
    }
}

并设置一个按钮来执行onClick方法writeNewMessage,这些是重要的代码行:

int counter = 0;

public void writeNewMessage(View view) {

        counter += 1;
        Message messagetoWrite = new Message("John", "Simple message: " + counter);
        String messageId = String.valueOf(counter);

        dbRef.child("users").child(messageId).setValue(messagetoWrite);
    }

运行时,我收到错误:

W/RepoOperation: setValue at /users/1 Failed: DatabaseError: Permission denied

我知道这个问题似乎很简单,可能会重复,但我还没有找到任何问题,而不会将其错误包含在身份验证或其他组件中.这个问题的简单性让我感到困惑.

编辑:我也发现了这个错误:

Failed to load module descriptor class: Didn't find class "com.google.android.gms.dynamite.descriptors.com.google.firebase.auth.ModuleDescriptor"

解决方法:

这看起来像你的google-services.json问题.

确保应用程序名称和客户端ID与firebase控制台中的相同.

如果您不确定从项目控制台重新下载google-services.json并将其添加到您的项目中.

android – 如何在Firebase中经过身份验证的用户和数据库之间进行链接?

android – 如何在Firebase中经过身份验证的用户和数据库之间进行链接?

我的Android应用中有Firebase身份验证.我的问题是如何在经过身份验证的用户(出现在Firebase控制台中的Firebase :: Auth选项卡)和数据库(Firebase :: Database选项卡)之间进行链接.

我需要通过Auth中出现的用户UID将数据库中的数据与Auth中的相关用户链接,并最终发送有关特定UID的查询以获取数据库中的相关信息.

是否有自动/内置功能可以执行此操作,或者每次我对用户进行身份验证时是否必须为数据库中的用户创建新条目,然后使用Auth中显示的UID值为其创建ID字段?

在User Management docs中,它仅解释了如何将用户添加到“身份验证”选项卡并重置其密码.

解决方法:

身份验证后,使用Firebase提供的UID创建一个子项,并将其值设置为您的用户类:

//get firebase user
FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();

//get reference
DatabaseReference ref = FirebaseDatabase.getInstance().getReference(USERS_TABLE);

//build child
ref.child(user.getUid()).setValue(user_class);

USERS_TABLE是root的直接子项.

然后,当您想要检索数据时,通过其UID获取对用户的引用,侦听addListenerForSingleValueEvent()(仅调用一次),并使用反射迭代结果:

//get firebase user
FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();

//get reference
DatabaseReference ref = FirebaseDatabase.getInstance().getReference(USERS_TABLE).child(user.getUid());
//IMPORTANT: .getReference(user.getUid()) will not work although user.getUid() is unique. You need a full path!

//grab info
ref.addListenerForSingleValueEvent(new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        final Profile tempProfile = new Profile(); //this is my user_class Class
        final Field[] fields = tempProfile.getClass().getDeclaredFields();
        for(Field field : fields){
            Log.i(TAG, field.getName() + ": " + dataSnapshot.child(field.getName()).getValue());
        }
    }

    @Override
    public void onCancelled(DatabaseError databaseError) {
    }
});

编辑:

或者没有反思:

@Override
public void onDataChange(DataSnapshot dataSnapshot) {
    final Profile p = dataSnapshot.getValue(Profile.class);
}

ASP.NET Core 获得部分经过身份验证的用户(即正确的用户名 + 密码,但还不是 2FA)

ASP.NET Core 获得部分经过身份验证的用户(即正确的用户名 + 密码,但还不是 2FA)

如何解决ASP.NET Core 获得部分经过身份验证的用户(即正确的用户名 + 密码,但还不是 2FA)?

在 ASP.NET Core (v5.0) 中,有没有办法在控制器/页面模型/中间件组件内部确定特定的 HTTP 请求是否由使用其用户名+密码成功进行身份验证的用户发出,但还没有通过他们的 2FA 阶段(假设它已启用)?所以基本上是在身份验证过程的阶段,在成功输入他们的凭据后,他们已被重定向到 2FA 令牌输入页面。

如果用户已通过包括 2FA 在内的所有方式进行身份验证,则 HttpContext.User.Identity.IsAuthenticated 的值仅是 true,这当然有意义,因为它是一个布尔值。

我一直在尝试使用 SignInManagerUserManagerIdentityUser 对象的某种组合来获取此登录状态的任何类型的状态指示器,但没有成功。这些对象似乎只有在用户成功通过身份验证后才可用,这当然也有意义。

我的用例是我正在编写一个中间件组件,它过滤所有请求并重定向用户以在尝试执行某些操作时输入他们的 2FA 令牌作为额外的安全措施。所以我认为通过这个中间件过滤初始登录 2FA(如果用户启用)会更简洁。如果这不合理,那么我只需要在我的代码中分别处理这两个不同的 2FA 验证应用程序,这可能会增加一些冗余(但不是很大)。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

asp.net-mvc – 仅为未经过身份验证的用户缓存内容

asp.net-mvc – 仅为未经过身份验证的用户缓存内容

对于网站,我想仅为未经过身份验证的用户缓存页面 – 经过身份验证的用户不会获得缓存内容(因为他们将更新并需要立即查看结果).

我知道如何使用varyByCustom改变每个用户的缓存:
Link1
Link2

…但我无法弄清楚如何完全关闭经过身份验证的用户的缓存.

该怎么办?

编辑

如果已经有未经身份验证的用户的页面缓存版本,则下面的代码存在问题.基本上,经过身份验证的用户将获得未经身份验证的事物视图.

但是,这里的链接有解决方案:Link

解决方法

使用HttpCachePolicy.AddValidationCallback.

见:http://msdn.microsoft.com/en-us/library/system.web.httpcachepolicy.addvalidationcallback.aspx

我们今天的关于即使对经过身份验证的用户使用最简单的规则,Firebase 实时数据库权限也被拒绝的分享已经告一段落,感谢您的关注,如果您想了解更多关于android – Firebase数据库权限被拒绝,读/写权限设置为true、android – 如何在Firebase中经过身份验证的用户和数据库之间进行链接?、ASP.NET Core 获得部分经过身份验证的用户(即正确的用户名 + 密码,但还不是 2FA)、asp.net-mvc – 仅为未经过身份验证的用户缓存内容的相关信息,请在本站查询。

本文标签: