编写安全规则
安全规则是一种强大的访问控制机制,允许您精确控制数据的访问权限。通过灵活的规则语法,您可以在数据库集合或存储桶上实现不同粒度的读写控制组合,确保数据安全。
默认规则
默认情况下,安全规则会拒绝所有的数据访问请求。这种"默认拒绝"的安全策略确保您的数据在未明确授权的情况下不会被访问。
{} // 空规则对象表示拒绝所有访问
用户身份认证
当经过身份认证的用户发起请求时,系统会自动使用用户唯一标识 uid 及用户登录方式 loginType 填充 auth 变量。当未经身份验证的用户发出请求时,auth 变量值为 null。
通过 auth 变量,您可以使用以下常用方式根据用户身份控制数据访问:
- 公开访问:不判断
auth值,允许所有用户访问 - 仅登录用户访问:检查
auth != null,确保用户已登录 - 用户私有数据:检查
auth.uid是否等于资源openid,确保用户只能访问自己的数据 - 特定登录方式限制:检查
auth.loginType,例如限制匿名登录用户访问(auth.loginType != "ANONYMOUS")
公开访问规则
任何不考虑 auth 的规则均可被视为公开(public)规则,因为它不依赖用户的身份验证上下文。这类规则在提供公开数据(如静态资源内容、公共信息等)的场景下非常适用。
- 数据库
- 云存储
{
"read": "doc._openid != null"
}
{
"read": "resource.openid != null"
}
仅对登录用户开放
在许多应用场景中,您可能希望限制只有已登录用户才能访问某些数据。例如,只有登录用户才可以查看论坛中的讨论内容或用户评论。由于所有未登录用户的 auth 变量值为 null,因此可以设置如下规则:
{
"read": "auth != null" // 只有已登录用户可以读取数据
}