跳到主要内容

保护文件

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

了解规则

云存储安全规则用于确定哪些人对存储桶中文件拥有读写权限,也可以用于验证文件元数据。规则基于 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 身份校验状态进行求值。

请求变量

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

Auth

字段名类型说明
loginTypestring登录方式 公众平台登录,开放平台登录,自定义登录,匿名登录等等
uidstring用户唯一 id,微信小程序的请求没有此值
openidstring用户 openid,仅在微信登录方式下存在值
LoginType 枚举
枚举值登录方式说明
WECHAT_PUBLIC微信公众号
WECHAT_OPEN微信开放平台
ANONYMOUS匿名登录
EMAIL邮箱登录
CUSTOM自定义登录

资源校验

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

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

Resource

属性类型说明
openidstring文件私有归属标识,标记所有者 id
pathstring文件在云存储中的相对路径,路径不包含桶名 格式为 path/image.jpg,路径起始不包含 ./、/、. 等路径符

正则匹配

存储安全规则支持特殊的语法,在规则中可以通过字面量的方式引入正则对象(eg. /^reg\$/),并通过在正则对象上调用 test 方法校验参数是否匹配正则。

注意
  1. 在规则表达式中判断 test 结果时需要显式地与 truefalse 比较,例如 read: "/^public/.test('public') == true",而不是直接写表达式 read: "/^public/.test('public')"
  2. 由于安全规则表达式承载于字符串,因此正则对象中如果涉及到需要转移的字符,需要多重转义,例如:如果需要匹配字符串 test/image, 正则对象可以为 /^test\/image/ ,那么配置在规则表达式中应该为 "/^test\\/image/.test("test/image")"

test

static

test(string) returns boolean 对象 true / false

在正则对象上调用,校验传入字符串 与正则对象是否匹配,返回 boolean 值

paramter

ParameterTypeDescription
stringstring非空,任意字符串

完整示例

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

// public 目录下的文件为公有写权限,其他文件为私有写权限
{
"read": true,
"write": "/^public/.test(resource.path) || resource.openid == auth.uid"
}