【问题标题】:Authenticate an user on firebase rest api security rules在 firebase rest api 安全规则上对用户进行身份验证
【发布时间】:2020-06-11 00:46:41
【问题描述】:

我有一个基本的安全规则来检查用户是否经过身份验证。

{
  "rules": {
    "users": {
      "$user_id": {
        ".write": "auth != null"
      }
    }
  }
}

当从客户端应用发送访问令牌时,如何获取 Firebase 安全规则以确认来自云功能的身份验证数据。

请求方法 = 发布

import * as admin from 'firebase-admin'

const DEPLOYED = false;

admin.initializeApp()

const ValidateToken = (request: any, response: any) => {

    const params = {
        a: request.body.token, // Client Validation
    }

    const ValidateToken = admin.auth().verifyIdToken(params.a).catch((error) => { throw { Message:error }});

    return Promise.all([ValidateToken]).then((res: any) => {
        return DEPLOYED ? res : response.status(200).json(res);
    }).catch(error => {
        return DEPLOYED ? error : response.status(400).json(error);
    });
}

export default ValidateToken;

提供 200 个响应和用户数据。

更新用户名

import FBApp from '../utils/admin'

FBApp

const UpdateUsername = (request: any, response: any) => {

    const params = {
        a: request.body.UID,
        b: request.body.username
    }

    const UpdateProfile = FBApp.database().ref('users').child(`${params.a}/username`).set(`@${params.b}`).catch((error) => { throw { Message:error }});

    return Promise.all([UpdateProfile]).then((res: any) => {
        response.status(200).json(res);
    }).catch(error => {
        response.status(400).json(error);
    });
}

export default UpdateUsername;

授予权限被拒绝

【问题讨论】:

    标签: firebase firebase-realtime-database firebase-authentication google-cloud-functions firebase-security


    【解决方案1】:

    为了让 Cloud Functions 正常工作和运行,它们具有管理权限,这意味着它们“绕过”在您的 Firebase 上设置的安全规则。因此,您只需设置规则以保护您的应用程序免受未经身份验证的用户的攻击。

    除此之外,我在下面找到了这篇文章,该文章还应该为您提供有关 Cloud Functions 和 Firebase 使用规则的更多信息。

    如果这些信息对您有帮助,请告诉我!

    【讨论】:

    猜你喜欢
    • 2019-01-20
    • 2018-09-11
    • 1970-01-01
    • 1970-01-01
    • 2016-10-01
    • 2021-09-11
    • 2020-06-23
    • 2019-08-08
    • 1970-01-01
    相关资源
    最近更新 更多