云存储提供基于同的声明式安全模型,称为云存储安全规则,可让开发者快速轻松地保护自己的文件。
# 了解规则
云存储安全规则用于确定哪些人对存储桶中文件拥有读写权限,也可以用于验证文件元数据。规则基于 json
结构,key
为操作类型,value
为 boolean
或 表达式字符串,当 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
对象提供文件元数据,可以在 read
,write
时校验这些属性,确保正确的访问。
# Resource
属性 | 类型 | 说明 |
---|---|---|
openid | string | 文件私有归属标识,标记所有者 id |
# 完整示例
综上,您可以为图片存储解决方案创建完整的示例规则:
{
"read": true,
"write": "resource.openid == auth.uid"
}