根据Firebase Rest API安全规则对用户进行身份验证

时间:2020-02-27 03:33:01

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

我有一个基本的安全规则,用于检查用户是否已通过身份验证。

{
  "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;

拒绝权限

1 个答案:

答案 0 :(得分:1)

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

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

让我知道信息是否对您有帮助!