# 了解安全规则

# 安全规则语言

安全规则基于灵活、强大的自定义语言,可以支持各种复杂性和细化程度。我们可以按照自己应用的具体需要,设置特定的规则或者一般性的规则。安全规则语言使用一种 JSON 结构,key 指代操作类型,value 为允许操作是的条件,可以为 boolean表达式字符串,表达式字符串语法类似 Javascript 语言,其是单个逻辑表达式,或多个逻辑表达式通过与/或方式组合,当表达式的计算值决定了操作是否被允许。

由于安全规则是新的自定义语言,因此存在学习曲线。请阅读本指南,在您深入了解更复杂的规则时,可以更好地了解此规则语言。

# 基本结构

    # 条件构造

    条件可以为 boolean表达式字符串,表达式字符串语法类似 Javascript 语言,其是单个逻辑表达式,或多个逻辑表达式通过与/或方式组合,当表达式的计算值决定了操作是否被允许。

      :::

      # 运算符

      运算符 说明 示例 说明
      == 等于 auth.uid == 'zzz' 用户的 uid 为 zzz
      != 不等于 auth.uid != 'zzz' 用户的 uid 不为 zzz
      > 大于 a>10 a 值大于 10
      >= 大于等于 a>=10 a 值大于等于 10
      < 小于 a<10 a 值小于 10
      <= 小于等于 a<>=10 a 值小于等于 10
      in 存在在集合中 auth.uid in ['zzz','aaa'] 用户的 uid 是['zzz','aaa']中的一个
      !(xx in []) 不存在在集合中,使用 in 的方式描述 !(a in [1,2,3]) !(auth.uid in ['zzz','aaa']) 用户的 uid 不是['zzz','aaa']中的任何一个
      && auth.uid == 'zzz' && a>10 用户的 uid 为 zzz 并且 a 值大于 10
      || 或者 auth.uid == 'zzz' || a>10 用户的 uid 为 zzz 或者 a 值大于 10
      . 对象元素访问符 auth.uid 用户的 uid
      [] 数组访问符属性 a[auth.uid] == 'zzz' a 对象,key 为用户 uid 的属性值为 zzz