云存储提供基于同的声明式安全模型,称为云存储安全规则,可让开发者快速轻松地保护自己的文件。

# 了解规则

云存储安全规则用于确定哪些人对存储桶中文件拥有读写权限,也可以用于验证文件元数据。规则基于 json 结构,key为操作类型,valueboolean 或 表达式字符串,当 boolean 或 表达式计算结果为 true 是则表示通过允许访问,否则拒绝访问。例如:

// 默认情况下,read / write 都为 false,拒绝来自客户端的访问。
{
}
// action value 可以为 true / false 值,代表 允许/拒绝 访问。
{
    "read": true,
    "write": false
}
// action value 可以为自定义表达式,表达式的计算值决定 允许/拒绝 访问。
{
    "read": "auth != null",
    "write": "auth == null || auth.uid == resource.openid"
}

# 匹配

存储安全规则对应存储桶,对存储桶中所有文件的访问生效。

# 请求校验

上传、下载、删除操作使用请求携带的 auth 身份校验状态进行求值。

# 请求变量

变量名 类型 说明
auth Auth 在用户登录后,提供 uid(用户的唯一 ID)和 loginType(登录类型)。如果用户未登录,则为 null。

# Auth

字段名 类型 说明
loginType string 登录方式 公众平台登录,开放平台登录,自定义登录,匿名登录等等
uid string 用户唯一 id,微信小程序的请求没有此值
openid string 用户 openid,仅在微信登录方式下存在值

# 资源校验

对规则进行校验是,可能还需要对正在上传/下载/修改或删除的文件元数据进行校验,这样可以创建功能强大的复杂规则来执行任务,例如允许上传包含特顶内容类型的文件。

存储安全规则通过 resource 对象提供文件元数据,可以在 readwrite 时校验这些属性,确保正确的访问。

# Resource

属性 类型 说明
openid string 文件私有归属标识,标记所有者 id

# 完整示例

综上,您可以为图片存储解决方案创建完整的示例规则:

{
  "read": true,
  "write": "resource.openid == auth.uid"
}